鹿泽鹿泽  2024-04-25 11:16:02 鹿泽笔记 隐藏边栏  0 

网站服务器的MYSQL升级到了5.7版本,升级完之后,打开网站便报错数据库,阅读相关文档,发现MYSQL5.7版本的“严格模式”是打开的。

严格模式控制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来实现。

关闭的方法

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或者服务器。

1、文章版权归作者所有,未经允许请勿转载。
2、本站所有文章,如无特殊说明或标注,均为本站原创发布。任何在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们邮箱:526009505@qq.com进行处理。
3、咨询请联系QQ:526009505