青年节快乐!今天来分享一个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.cnfinit_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模式的,可以随便操作不会报错。
