我正在使用mysql (5.0.32-Debian_7etch6-log)并且我有一个夜间运行的批量加载php (5.2.6)脚本(通过 PDO 使用 Zend_DB (1.5.1)),它执行以下操作:
- 截断一组 4 个“导入”表
- 将数据批量插入到这 4 个“导入”表中(重新使用以前在表中的 id,但我截断了整个表,所以这应该不是问题,对吧?)
- 如果一切顺利,将“live”表重命名为“temp”,将“import”表重命名为“live”,然后将“temp”(旧“live”)表重命名为“import”
这工作了好几个星期。现在我偶尔会得到这个,在整个批量加载过程的中间的某个地方:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '911' for key 1
请注意,这不是截断之前表中的第一个 id。当我再次手动启动脚本时,它就像一个魅力。
有任何想法吗?剩余索引,可能与重命名有关?
此外,当我之后检查表中是否有 id 为 911 的条目时,它甚至不在那里。