php - 将空字符串插入 MySQL 5 中的 auto_increment 列

标签 php mysql

我继承了一个项目,我们正在尝试将其从 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/

相关文章:

javascript - 根据在此子类别中选择的选项动态更改子类别选择选项

PHPExcel PDF布局

php - VIEWPORT 不适用于重定向的 URL

mysql - DBSQL 将列中一个实体的值插入到不同列中的另一个实体

mysql - CROSS JOIN 什么时候有用?

javascript - 在表内显示 ajax 响应

php - 是否可以将类别页面设为 magento 的主页?

python - bottle_mysql 编码失败

php - PHP显示来自mysql的表格错误

mysql - 在触发器中访问远程 mysql 数据库