这个问题,由mysql的sql_mode
变量设置导致的。在mysql控制台上输入:
show variables like 'sql_mode' ;
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
那么需要去掉 “NO_ZERO_IN_DATE,NO_ZERO_DATE”
通过如下命令设置:
set global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
如果需要Mysql 字段长度过长自动截断的机制
sql-mode = “xx_mode” sql-mode中有STRICT_TRANS_TABLES是在数据超长的情况下会插入失败,当删除这个限制时,插入超长会MySQL会自动截断超长的字段 ,那么用下面的:
set global sql_mode = 'ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
最后,不想麻烦,无脑的就用下面的:
set global sql_mode = 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
或者
SET @@global.sql_mode='';