我试图更新访问的列,使其值为1。我使用MySQL工作台,我从工作台内部在SQL编辑器中编写语句。我正在写下面的命令:

UPDATE tablename SET columnname=1;

它给了我以下错误:

您正在使用安全更新模式,并且试图在没有 若要禁用安全模式,请切换该选项 ....

我按照说明,我从编辑菜单中取消了安全更新选项,然后是首选项,然后是SQL编辑器。同样的错误仍然出现&我无法更新此值。求你了,告诉我怎么了?


当前回答

我找到了答案。问题是我必须在表名之前加上模式名。也就是说,命令应该是:

UPDATE schemaname.tablename SET columnname=1;

谢谢所有。

其他回答

SET SQL_SAFE_UPDATES=0;

OR

点击编辑——>首选项

单击“SQL查询”页签,取消选中“安全更新”复选框

查询——>重新连接服务器

现在执行sql查询

在工作台上,我通过禁用安全更新模式解决了这个问题:

-编辑->首选项-> Sql编辑器然后取消安全更新。

最简单的解决方案是定义行限制并执行。这样做是为了安全。

如果您在存储过程中遇到了这个问题,并且您不能在WHERE子句中使用键,那么您可以通过声明一个变量来解决这个问题,该变量将保留应该更新的行数的限制,然后在更新/删除查询中使用它。

DELIMITER $
CREATE PROCEDURE myProcedure()
BEGIN
    DECLARE the_limit INT;

    SELECT COUNT(*) INTO the_limit
    FROM my_table
    WHERE my_column IS NULL;
        
    UPDATE my_table
    SET my_column = true
    WHERE my_column IS NULL
    LIMIT the_limit;
END$
SET SQL_SAFE_UPDATES=0;
UPDATE tablename SET columnname=1;
SET SQL_SAFE_UPDATES=1;