管理mysql数据严格模式,和安全模式处理

最近使用mysql数据库高一点的版本遇到了,插入和修改等语句失败情况。语句没有错误,但是workbench提示 Field 'id' doesn't have a default value。原因是

数据库开启了严格模式,以插入语句来说 语句中包含多列空值时,则不允许插入。如果确实需要插入多列空值的情况下。则就需要关闭严格审查模式了

关闭方法,首先找到mysql的安装目录下的.ini文件,以默认安装目录来说一般存在

C:ProgramDataMySQLMySQL Server 5.6my.ini

在别的服务器运行我的网站程序的时候,出现了Field 'id' doesn't have a default value 的提示,意思是这个值我没有提交数据,并且数据库结构没有设置默认值,由于对方的mysql服务器开启了STRICT_TRANS_TABLES严格模式,所以报错了

解决方法是:

如果自己的服务器,有权限修改my.ini的话,打开my.ini,查找 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

修改为

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

然后重启MYSQL

在别人的虚拟空间上当然不可能实现,所以根本的解决方法还是修改自己的数据结构,把非空的字段加上默认值,以后设计数据库要注意这一点,方便程序的移植

安全模式处理

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect. 0.000 sec

原因是你执行更新和删除语句没有使用主键条件作为条件

临时关闭数据库限制

执行命令SET SQL_SAFE_UPDATES = 0;修改下数据库模式

SET SQL_SAFE_UPDATES = 0

使用完之后关闭

如果想要提高数据库安全等级,可以在恢复回原有的设置,执行命令:SET SQL_SAFE_UPDATES = 1;

原文地址:https://www.cnblogs.com/HelloXZ/p/4202843.html