0

我真的不知道是什么导致了这个错误。

    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,但它不在那里......

4

2 回答 2

2

删除runtime文件夹。因为系统将运行时文件夹用于各种任务:会话、日志记录等。它也在运行时文件夹中YiiSession创建表

于 2013-05-09T09:40:38.667 回答
1

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

 'connectionID'=>'db',

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

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

于 2014-04-17T17:20:59.847 回答