2013-05-09 180 views
0

我真的不知道是什么原因导致这个错误时,未能执行SQL语句。CDbCommand部署到服务器

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 
    ) 

它是在服务器或警予.. 但我想它是在警予的一部分。 但我错过了什么配置? 我不是很熟悉,因为警予即时通讯新给它。 请帮忙吗? 在此先感谢

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

回答

1

删除runtime文件夹。 由于运行时文件夹由系统完成各种任务:会议记录等 也正是在运行时文件夹YiiSession表创建

1

在任何人的情况下仍引用这一点 - 更完整的答案是,Yii的在默认情况下使用SQLite3的数据库,如果你不指定在(CDbHttpSession)会话配置的连接字符串。这个SQLite数据库是在运行时文件夹中创建的。 (这就是为什么删除运行时文件夹的内容的作品 - 你实际上只需要删除会话xxxx.db文件。)如果你想使用你正在使用你的主要连接同一个数据库,添加:

'connectionID'=>'db', 

到您的会话配置。它也建议在生产中使用您设置autoCreateSessionTable为false,这也将防止错误 - 你只需要确保你部署的SQLite数据库或建立适当的表在主数据库。看到here

默认情况下,它会使用一个名为“会话YiiVersion.db”的sqlite3的数据库应用程序在运行目录下。您还可以指定connectionID,以便它使用数据库应用程序组件访问数据库。