我真的不知道导致这个错误的原因。
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,但它不在那里......
答案 0 :(得分:2)
删除runtime
文件夹。
因为系统使用运行时文件夹来执行各种任务:会话,日志记录等。
它也在运行时文件夹中创建了YiiSession
表
答案 1 :(得分:1)
如果有人还在引用这个 - 更完整的答案是,如果您没有在(CDbHttpSession)会话配置中指定连接字符串,Yii默认使用SQLite3数据库。此SQLite数据库是在运行时文件夹中创建的。 (这就是删除运行时文件夹内容的原因 - 实际上只需要删除session-xxxx.db文件。)如果要使用与主连接相同的数据库,请添加:
'connectionID'=>'db',
到您的会话配置。它还建议您将生产用途设置为autoCreateSessionTable
为false,这也可以防止错误 - 您只需要确保部署SQLite数据库或在主数据库中设置正确的表。见here
默认情况下,它将使用名为' session-YiiVersion.db'的SQLite3数据库。在应用程序运行时目录下。您还可以指定connectionID,以便它使用数据库应用程序组件来访问数据库。