一、问题 1
Incorrect integer value
主要的坑在于 sql_mode 的值,MySQL 5.5 中 sql_mode默认值为'', MySQL 5.6(貌似是为了增加安全性),将 sql 默认值定为 NO_ENGINE_SUBSTITUTION,于是原来的程序 sql 语法不严谨就会出现报错。
处理的方法有两种:
一种是使用 SET 命令,在 MySQL 的命令行中输入
SET GLOBAL sql_mode = '';
坏处似乎是每次重新启动都需要重新设置。
另一种是修改 my.cnf 文件,在 my.cnf 配置文件中添加
sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
保存文件,重启 MySQL 服务。
但是 MYSQL8 以上已经取消了 NO AUTO CREATE USER,所以 MYSQL8 以上设置
sql_mode=NO_ENGINE_SUBSTITUTION
二、问题 2
this is incompatible with sql mode=only full group by
ONLY FULL GROUP BY 要求 sql 中 select 后面的字段必须出现在 qroup by 后面,或者被聚合函数包裹,不然会抛出上面的错误。
sql_mode='NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,ANSI_QUOTES'
mysql 第30章 Incorrect integer value