Yii Cache对我来说很好,直到今天我在使用缓存的脚本中看到数据库异常:
exception 'CDbException' with message 'CDbCommand failed to execute the SQL statement: SQLSTATE[HY000]: General error: 5 database is locked. The SQL statement executed was: DELETE FROM YiiCache WHERE id='9ccac723c84ae75582784f9e3738d781'' in C:\xampp\htdocs\framework\db\CDbCommand.php:336
我不知道为什么在一分钟之前一切正常时出现这个错误。在那之后,我看到了几个相同的异常Yii缓存,然后是另一个:
exception 'CDbException' with message 'CDbCommand failed to execute the SQL statement: CDbCommand failed to prepare the SQL statement: SQLSTATE[HY000]: General error: 1 table YiiCache already exists. The SQL statement executed was: CREATE TABLE YiiCache
(
id CHAR(128) PRIMARY KEY,
expire INTEGER,
value BLOB
)' in C:\xampp\htdocs\framework\db\CDbCommand.php:336
由于缓存正在代码中的许多地方使用,所以我不能把try catch放在任何地方,而是我想解决根本原因。当我删除db缓存文件并且框架启动了一个新文件时,这个问题就解决了。旧文件大小约为71MB。
环境:
WAMP
Yii框架:1.1.8
PHP版本:5.3.8
请让我知道,以便将来可以避免这种情况。
谢谢
更新
我想在这里添加一些可能有用的信息。我的SQlite缓存db文件大小有时会疯狂增加,这会导致DB打开和关闭操作变慢。通常这个文件没有超过500KB的数据,但有时会突然达到40MB,从而减慢了操作速度。