【发布时间】:2018-12-13 21:27:58
【问题描述】:
将 MySql 5.5 升级到 5.7 后,我在使用 php 7.1 的数据库架构中遇到了插入查询失败的问题。
查询在 5.5 版本上运行良好,但 5.7 抛出异常:
消息:受保护:(字符串)SQLSTATE [HY000]:一般错误:1366 不正确的整数值:第 1 行的列 'is_on_demand' 的 ''
is_on_demand 是 tinyint(1) 类型
考虑到 5.5 允许这样做,为什么 5.7 不允许将空字符串插入为 false 值?
【问题讨论】:
-
我找不到有关更改的具体参考,但它肯定是合乎逻辑的。错误值通常是零而不是空字符串。此外,空字符串不是整数,因此确保整数列具有整数值是有意义的(当然,除非它被定义为能够为空......当然这与空字符串不同)。
-
@Dave 我已成功将
sql_mode = "NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"添加到我在 debian 下的 mysql 配置中。