更新查询在 mysql workbench 中不起作用

Update query not working in mysql workbench

我有一个 MySql 查询,如下所示:

UPDATE signup SET lastname='Lastname', password='123'
WHERE firstname='Firstname';

我正在使用 MySql Workbench 来执行查询。

但它没有更新行并显示此错误:

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 Editor and reconnect.

[编辑] @ManojSalvi 知道了,workbench 相关

MySQL error code: 1175 during UPDATE in MySQL Workbench


对我来说很好...

SQL Fiddle

MySQL 5.6 架构设置:

CREATE TABLE t
    (`firstname` varchar(6), `lastname` varchar(14), `password` varchar(3))
;

INSERT INTO t
    (`firstname`, `lastname`, `password`)
VALUES
    ('Pramod', 'Alfred', '***'),
    ('test', 'hello h.', '***')
;
UPDATE t SET lastname='Alfred Schmidt', password='123' WHERE firstname='Pramod';

查询 1:

select * from t

Results:

| firstname |       lastname | password |
|-----------|----------------|----------|
|    Pramod | Alfred Schmidt |      123 |
|      test |       hello h. |      *** |

在 mysql workbench 中默认启用安全模式,因此如果您的 WHERE 子句没有密钥,它将阻止 运行 查询.尝试使用这些步骤禁用它 -

Edit > Preferences > Sql Editor > uncheck the "Safe Updates"

注意 - 尝试重新连接服务器 (Query > Reconnect to Server) 然后再次 运行 您的查询。

MySQL 可以帮助您特别避免 updating/deleting 一次拍摄多行。为此,它不允许您在不传递 ID 参数的情况下进行 运行 UPDATE 查询。这称为 SAFE UPDATES 模式。

正如@ManojSalvi 所说,您可以从设置中永久设置它。

如果您想暂时禁用 SAFE UPDATE 模式,您可以尝试以下操作:-

SET SQL_SAFE_UPDATES = 0;
UPDATE signup SET lastname='Lastname', password='123'
WHERE firstname='Firstname';
SET SQL_SAFE_UPDATES = 1;

"Safe mode" 在 MySQL workbench 中默认打开。可以改到左上角我的sqlworkbench –> preferences –> sql editor –> 取消勾选安全模式,然后尝试重新连接。或者你可以直接输入

SET SQL_SAFE_UPDATES = 0;

这会做同样的事情。

我认为这与 SAFE UPDATES 没有任何关系,因为您已经明确表示 WHERE 您想要进行更改。 我遇到了同样的问题,但我尝试将 列的名称 包装在反引号中,并且成功了。您可以在键盘上数字 1 的左侧找到反引号。

您可以尝试的另一件事是 SELECT table 并双击您想要 UPDATE 的项目然后应用window.

右下角的变化