部署到服务器时,CDbCommand无法执行SQL语句

时间:2013-05-09 08:09:00

标签: php yii

我真的不知道导致这个错误的原因。

    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,因为我是新手。 有什么帮助吗? 提前致谢

更新:我在我的数据库中检查YiiSession,但它不在那里......

2 个答案:

答案 0 :(得分:2)

删除runtime文件夹。 因为系统使用运行时文件夹来执行各种任务:会话,日志记录等。 它也在运行时文件夹中创建了YiiSession

答案 1 :(得分:1)

如果有人还在引用这个 - 更完整的答案是,如果您没有在(CDbHttpSession)会话配置中指定连接字符串,Yii默认使用SQLite3数据库。此SQLite数据库是在运行时文件夹中创建的。 (这就是删除运行时文件夹内容的原因 - 实际上只需要删除session-xxxx.db文件。)如果要使用与主连接相同的数据库,请添加:

 'connectionID'=>'db',

到您的会话配置。它还建议您将生产用途设置为autoCreateSessionTable为false,这也可以防止错误 - 您只需要确保部署SQLite数据库或在主数据库中设置正确的表。见here

  

默认情况下,它将使用名为' session-YiiVersion.db'的SQLite3数据库。在应用程序运行时目录下。您还可以指定connectionID,以便它使用数据库应用程序组件来访问数据库。