2013-05-09 4 views
0

Я действительно не знаю, что вызывает эту ошибку.CDbCommand не выполнил инструкцию SQL при развертывании на сервере

CDbCommand failed to execute the SQL statement: CDbCommand failed to prepare the SQL statement: SQLSTATE[HY000]: 
    General error: 1 table 'YiiSession' already exists. The SQL statement executed was: 
    CREATE TABLE 'YiiSession' (
    "id" CHAR(32) PRIMARY KEY, 
    "expire" integer, 
    "data" BLOB 
    ) 

Является ли это на сервере или в Yii .. , но я предполагаю, что это в Yii части. Но какие конфигурации я пропустил? Я не очень знаком с yii, потому что я новичок в этом. любая помощь пожалуйста? Заранее спасибо

UPDATE: Я проверить YiiSession в моей базе данных, но это не там ...

ответ

1

Удалить папку runtime. Поскольку папка выполнения используются системой для различных задач: сессии, протоколирование и т.д. Также в папке во время выполнения, что YiiSession таблицы создаются

1

В случае, если кто еще ссылающееся это - более полный ответ, что Yii по умолчанию используется база данных SQLite3, если вы не указали строку подключения в настройке сеанса (CDbHttpSession). Этот SQLite db создается в папке времени выполнения. (Вот почему удаляется содержимое папки времени выполнения - вам действительно нужно удалить файл session-xxxx.db.) Если вы хотите использовать ту же базу данных, которую используете для своего основного подключения, добавьте:

'connectionID'=>'db', 

к вашей конфигурации сеанса. Рекомендуется также использовать для использования autoCreateSessionTable значение false, что также предотвратит ошибку - вам просто нужно убедиться, что вы развертываете SQLite db или настраиваете соответствующую таблицу в своем основном db. см. here

По умолчанию в каталоге среды выполнения приложения будет использоваться база данных SQLite3 с именем «session-YiiVersion.db». Вы также можете указать connectionID, чтобы он использовал компонент приложения DB для доступа к базе данных.

Смежные вопросы