青年节快乐!今天来分享一个MySQL的小坑:
在MysqlWorkbench中执行如下语句时报错[Error-1175]
update user_ set credit=credit-1 where credit!=0;
这是因为MySQL的safeUpdate模式没有关闭,在没有where主键或者Limit的情况下不允许update。
关闭方式:
set sql_safe_updates=0; // 当前会话
set global sql_safe_updates=0; // 全局
如果需要永久关闭,需要在mysqld配置文件中加上一句
通常该文件在
/etc/my.cnf
init_connect='SET SQL_SAFE_UPDATES=0'
注意 safeUpdate模式是一种编辑器参数,只与当前编辑器有关。
举个例子,你在本机上的/etc/my.cnf
中设置的SQL_SAFE_UPDATES=0
只对在命令行中的SQL语句生效,对MysqlWorkbench中的命令不生效;同理在服务器上的/etc/my.cnf
与本机的/etc/my.cnf
也各不相干;Springboot中的Mapper是没有这种safe模式的,可以随便操作不会报错。