在解决问题之前,我们要先了解一下mysql的严格模式和非严格模式,有兴趣可以自己查看一下官方文档
严格模式
顾名思义,就是比非严格模式更为严格,主要就是对数据的要求更为严格,比如数据的类型,长度,格式等。比如一个整型字段我们写入一个字符串类型的数据,在非严格模式下MySQL不会报错,同样如果定义了char或varchar类型的字段,当写入或更新的数据超过了定义的长度也不会报错。还有一些关于null的数据问题,也可能是因为严格模式造成的,不过我没遇到过,就跳过这个问题┓( ´∀` )┏
个人推荐,开启严格模式,毕竟也算是对我们代码的一种测试,严格一点总好过项目完成后出问题再大改好。
首先,通过
SELECT @@GLOBAL.sql_mode; //查看MySQL的全局模式
SELECT @@SESSION.sql_mode; //查看MySQL的当前连接的模式,如果当前连接模式与全局模式不一致,关闭连接后再连接就一致了
这两个语句查看你是否处于严格模式,如果查询结果中有
STRICT_TRANS_TABLES
这个类型就代表你开启了严格模式(看了别人的文章貌似还要跟ONLY_FULL_GROUP_BY组合才算?这个不清楚)
如果没有,