MySQLWorkbench报Error Code 1175

来源:互联网 发布:淘宝售后的服务流程 编辑:程序博客网 时间:2024/05/01 07:06

安装好MySQL数据库之后,准备用MySQLWorkbench删除数据库中的匿名用户。

USE mysql;DELETE FROM user where user = '';

执行sql语句时,Action Output窗口报如下错误信息:

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.

根据错误信息,查看Preferences,得到如下解释。即目前开启了Safe Updates模式,在该模式下,不使用WHERE语句或者LIMIT语句的UPDATE、DELETE操作会被禁止执行。在该模式下,可以有效防止修改或者删除大量的行记录。考虑的真周全。在Preferences中修改之后,需要在Query窗口中,重新连接到服务器就可以生效。不需要重启Workbench。



根据官方解释,该参数实际默认值为0,即不开启Safe Updates模式。

sql_safe_updates [589]If set to 1, MySQL aborts UPDATE or DELETE statements that do not use a key in the WHERE clauseor a LIMIT clause. (Specifically, UPDATE statements must have a WHERE clause that uses a key or a LIMIT clause, or both. DELETE statements must have both.) This makes it possible to catch UPDATE or DELETE statements where keys are not used properly and that would probably change or delete a large number of rows. The default value is 0.
但在Query窗口中查询该参数设置,结果如下:


按照官方说法,参数为服务端系统参数,作用域为Global和Session,可以动态修改。因此,直接使用命令修改sql_safe_updates为0:

SET session sql_safe_updates = 0;

这时,删除匿名用户成功。如果要保持Safe Updates模式,进行删除操作,则需要同时使用where语句和limit语句来进行限定:

DELETE FROM user WHERE user = '' limit 1;



0 0