Связь с БД

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
alexbelkevich
Сообщения: 10
Зарегистрирован: 2013.10.03, 09:45

Связь с БД

Сообщение alexbelkevich »

Добрый день. Сейчас прохожу создание блога на yii (второй день с ним разбираюсь). И не могу понять вот что:
В базе testdrive.db, которая появляется после установки сайта на сервер, есть созданная таблица tbl_user. Я создаю таким же макаром таблицу tbl_phone с двумя полями (создаю в schema.sqlite.sql).

Код: Выделить всё

CREATE TABLE tbl_phone (
    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    name VARCHAR(128) NOT NULL,
    phone VARCHAR(128) NOT NULL,
)
  
Я захожу по пути http://localhost/site/index.php?r=gii, ввожу пароль.
Все работает. Далее захожу в Model Generator. В Table Name ввожу tbl_phone. В Model Class ввожу phone. Нажимаю Preview и выводится ошибка Table 'tbl_phone' does not exist.
Подскажите, в чем ошибка, что не так делаю?
И где надо таблицы создавать? в файле .db или в schema.sqlite.sql? Спасибо большое!
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Связь с БД

Сообщение Nafania »

sql файлы это просто схемы, а не базы.
Вам по ним нужно создать базу. А какого типа sqlite или myqsl - это решать вам.
alexbelkevich
Сообщения: 10
Зарегистрирован: 2013.10.03, 09:45

Re: Связь с БД

Сообщение alexbelkevich »

Приведенный выше код я создал в sqlite.. Почему тогда я не могу обратиться к ней через Model Generator? Или может я не понимаю логики работы..
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Связь с БД

Сообщение Nafania »

У вас sqlite база подключена в конфиге?
alexbelkevich
Сообщения: 10
Зарегистрирован: 2013.10.03, 09:45

Re: Связь с БД

Сообщение alexbelkevich »

Да. в main.php

Код: Выделить всё

'db'=>array(
            'connectionString' => 'sqlite:protected/data/testdrive.db',
        ), 
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Связь с БД

Сообщение Nafania »

Подключено правильно, просто не очень понятна вот это
Я создаю таким же макаром таблицу tbl_phone с двумя полями (создаю в schema.sqlite.sql).
Как вы редактируете базу данных, добавляя в нее таблицы?
alexbelkevich
Сообщения: 10
Зарегистрирован: 2013.10.03, 09:45

Re: Связь с БД

Сообщение alexbelkevich »

через schema.sqlite.sql. В нем изначально было таблица

Код: Выделить всё

CREATE TABLE tbl_user (
    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    username VARCHAR(128) NOT NULL,
    password VARCHAR(128) NOT NULL,
    email VARCHAR(128) NOT NULL
); 
В этом же файле, ниже, я создал свою таблицу

Код: Выделить всё

CREATE TABLE tbl_phone (
    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    name VARCHAR(128) NOT NULL,
    phone VARCHAR(128) NOT NULL,
) 
К первоначальной таблице через Model Generator обращается без проблем. А вот к моей таблице выдается ошибка...
alexbelkevich
Сообщения: 10
Зарегистрирован: 2013.10.03, 09:45

Re: Связь с БД

Сообщение alexbelkevich »

Никакие действия пока не помогли. Не пойму, почему БД не видит мою таблицу..
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Связь с БД

Сообщение Nafania »

Я повторюсь. Это просто файл, где описана схема.
Вам нужно эту схему внести в базу данных. Туда же и запросы свои направлять.
Вы просто редактируете текстовый файл, который фактически не имеет отношения к базе данных.
Вам рановато Yii еще изучать.
alexbelkevich
Сообщения: 10
Зарегистрирован: 2013.10.03, 09:45

Re: Связь с БД

Сообщение alexbelkevich »

Я базы данных на уровне создания таблиц и создания сложных запросов знаю. Просто никогда с этим не сталкивался...
Не могу открыть .db - какие иероглифы..
alexbelkevich
Сообщения: 10
Зарегистрирован: 2013.10.03, 09:45

Re: Связь с БД

Сообщение alexbelkevich »

Сделал) Этот код надо было, как и написал Nafania в test.db. Саму БД открыл через SQLliteStudio
alexbelkevich
Сообщения: 10
Зарегистрирован: 2013.10.03, 09:45

Re: Связь с БД

Сообщение alexbelkevich »

Теперь новая проблема...
Как создать свою БД? Создаю ее через SQLiteStudio, экспортирую в protected/date. В main.php прописываю

Код: Выделить всё

'db'=>array(
            'connectionString' => 'sqlite:protected/data/blog.db'
        ), 
В shema.sqlite.sql прописываю

Код: Выделить всё

CREATE TABLE tbl_usereg (
    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    name VARCHAR(15) NOT NULL,
    password VARCHAR(20) NOT NULL,
    email VARCHAR(50) NOT NULL
);

INSERT INTO tbl_usereg (name, password, email) VALUES ('test1', 'pass1', 'test1@example.com');
 
В итоге в gii, когда нажимаю на Model Generation, вываливается ошибка CDbCommand failed to execute the SQL statement: CDbCommand failed to prepare the SQL statement: SQLSTATE[HY000]: General error: 26 file is encrypted or is not a database. The SQL statement executed was: SELECT DISTINCT tbl_name FROM sqlite_master WHERE tbl_name<>'sqlite_sequence'

Гугл не помог... Может кто-нибудь пошагово сможет оъяснить, как создавать и подцеплять БД в Yii? Спасибо...
Аватара пользователя
jilizart
Сообщения: 82
Зарегистрирован: 2010.04.22, 18:56
Контактная информация:

Re: Связь с БД

Сообщение jilizart »

Русским языком же написано что shema.sqlite.sql это схема базы. Сама база в *.db файлах лежит, в них нужно выполнять запрос на создание таблиц, через любой SQLite менеджер баз
alexbelkevich
Сообщения: 10
Зарегистрирован: 2013.10.03, 09:45

Re: Связь с БД

Сообщение alexbelkevich »

Так я так и делаю. В итоге вышеприведенная ошибка. Не могу модель создать
Ответить