我继承了一个项目,我们正在尝试将其从 MySQL 4.0(!) 迁移到 MySQL 5,并从 myISAM 迁移到 InnoDB。查询现在正在下降,因为它们是在所有参数(包括整数)上使用 ADODB 连接的 ->qstr() 构造的。如果没有提供任何值(value),我最终会得到:
INSERT INTO tablename VALUES ('', 'stuff'...)
其中第一列是 auto_increment。这会导致错误(足够公平,因为 '' 不是 int)。 MySQL 中是否有一个开关使它的行为像以前一样(我假设它只是默默地转换为 0?)
最佳答案
编辑:
我刚刚进行了一些测试,我在下面写的内容对您根本没有帮助。错误是因为错误的数据类型,而我建议的 SQL 设置并没有改变它。不过,我会在这里留下这个答案,因为它可能对其他人有帮助。
首先,仔细检查该列是否确实是自动递增的 - 有几次我在 CREATE TABLE
文件中遗憾地缺少列是 auto_increment 的事实。
另一件可能有帮助的事情是检查 NO_AUTO_VALUE_ON_ZERO
未开启。
SET SQL_MODE=''
应该将其关闭。
关于php - 将空字符串插入 MySQL 5 中的 auto_increment 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2989478/