这两天发现 WUSN 中的缓存更新部分有问题,估计是上星期将缓存数据从 MySQL 数据库中独立出来,修改的代码中出现了错误。
开始怀疑是 PDOStatement::closeCursor 方法清除了获取到的数据,但经过 debug,发现并没有这个问题。但在 debug 时发现 SQL 语句有个问题,就是 WHERE 子句为 id = '',没有数字。用软件查看数据库,发现 id 全为 NULL。最后发现是字段类型定义错误,自增字段应为 INTEGER,而我给定义成了 INTEGER(10),多写了个长度。改为 INTEGER 类型后,重建缓存,id 字段正常了。
但做完这个修改后,发现缓存仍然不能自动更新。又将 debug 时得到的 SQL 语句放到数据库管理软件里执行,结果得到了在 LIMIT 附近有语法错误的信息。一搜索,得知 SQLite 不支持 UPDATE 及 DELETE 语句中的 LIMIT 子句。去除各 UPDATE 和 DELETE 语句中的 LIMIT 1 后,一切恢复正常。
开始怀疑是 PDOStatement::closeCursor 方法清除了获取到的数据,但经过 debug,发现并没有这个问题。但在 debug 时发现 SQL 语句有个问题,就是 WHERE 子句为 id = '',没有数字。用软件查看数据库,发现 id 全为 NULL。最后发现是字段类型定义错误,自增字段应为 INTEGER,而我给定义成了 INTEGER(10),多写了个长度。改为 INTEGER 类型后,重建缓存,id 字段正常了。
但做完这个修改后,发现缓存仍然不能自动更新。又将 debug 时得到的 SQL 语句放到数据库管理软件里执行,结果得到了在 LIMIT 附近有语法错误的信息。一搜索,得知 SQLite 不支持 UPDATE 及 DELETE 语句中的 LIMIT 子句。去除各 UPDATE 和 DELETE 语句中的 LIMIT 1 后,一切恢复正常。
Current language: Chinese (Simplified)