MYSQL5.7+的严格模式的相关介绍

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

原文链接:https://www.bailuze.com/7198.html,转载请注明出处。
本站所有文章,如无特殊说明或标注,均为本站原创发布。任何在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
0