mysql 5.7:常规错误:1366 tinyint(1)字段的整数值“”不正确

k7fdbhmy  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(301)

在将mysql 5.5升级到5.7之后,我在使用php7.1的数据库模式中遇到了插入查询失败的问题。
查询在5.5版本上运行良好,但5.7引发异常:
message:protected:(string)sqlstate[hy000]:常规错误:1366第1行的列“is\u on\u demand”的整数值“”不正确
是按需的是tinyint(1)类型
既然5.5允许,为什么5.7不允许将空字符串作为假值插入?

dphi5xsq

dphi5xsq1#

隐藏错误(不建议这样做,但在修复根本原因之前,您可能必须这样做)
禁用mysql严格模式: SHOW VARIABLES LIKE 'sql_mode';+--------------+------------------------------------------+ |Variable_name |Value | +--------------+------------------------------------------+ |sql_mode |STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION| +--------------+------------------------------------------+sudo nano /etc/mysql/my.cnf 添加以下内容

[mysqld]
sql_mode= <previous modes list but exclude STRICT_TRANS_TABLES>
``` `sudo service mysql restart` 注意:前面的步骤将显示启用的mysql模式的警告,而不是产生错误,要隐藏警告,您也可以像前面的步骤一样删除相关的模式。
使用文档:https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html
ycl3bljg

ycl3bljg2#

添加:

sql_mode = "NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

进入mysql配置文件。

相关问题