概述
博主今天将另一个测试网站(Emlog程序)服务器的MYSQL升级到了5.7版本
升级完之后,打开网站便报错数据库
阅读相关文档,发现MYSQL5.7版本的“严格模式”是打开的
简述严格模式
[scode type="share"]严格模式控制MySQL如何处理非法或丢失的输入值的SQL。有几种原因可以使一个值为非法。例如,数据类型错误或超出范围。当新插入的行不包含某列的没有显示定义DEFAULT子句的值,则该值被丢失。
对于事务表,当启用STRICT_ALL_TABLES或STRICT_TRANS_TABLES模式时,如果语句中有非法或丢失值,则会出现错误。SQL语句被回滚。
对于非事务表,STRICT_TRANS_TABLES,MySQL将非法值转换为最接近该列的合法值并插入调整后的值。如果值丢失,MySQL在列中插入隐式 默认值。在任何情况下,MySQL都会生成警告而不是给出错误并继续执行语句。
如果你不使用严格模式(即不启用STRICT_TRANS_TABLES或STRICT_ALL_TABLES模式),对于非法或丢失的值,MySQL将插入调整后的值并给出警告。在严格模式,你可以通过INSERT IGNORE或UPDATE IGNORE来实现。[/scode]
如何关闭
Linux
打开MYSQL的安装目录
找到my.cnf 进行编辑
查找
sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
修改为
sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
若找不到就在[mysqld]下添加即可
重启MYSQL:
sudo /etc/init.d/mysql restart
Windows
在MYSQL安装目录中找到mysql.ini
同Linux一样修改
然后重启MYSQL或者服务器
转载请保留原文链接
评论