更新查询在 mysql 工作台中不起作用

Posted

技术标签:

【中文标题】更新查询在 mysql 工作台中不起作用【英文标题】:Update query not working in mysql workbench 【发布时间】:2016-03-02 11:32:09 【问题描述】:

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

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

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

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

您正在使用安全更新模式,并且您尝试在不更新的情况下更新表 使用 KEY 列的 WHERE 要禁用安全模式,请切换选项 在 Preferences -> SQL Editor 中并重新连接。

【问题讨论】:

"显示错误" ​​=> 哪一个? 我的错误是 - 您正在使用安全更新模式,并且您尝试更新没有使用 KEY 列的 WHERE 的表 要禁用安全模式,请切换 Preferences -> SQL Editor 中的选项并重新连接。 请查看类似问题http://***.com/questions/11448068/mysql-error-code-1175-during-update-in-mysql-workbench ***.com/questions/11448068/…的可能重复 【参考方案1】:

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

您可以尝试的另一件事是SELECT 表格 并双击您想要UPDATE 的项目,然后应用窗口右下角的更改。

【讨论】:

【参考方案2】:

MySQL 可以帮助您避免一次更新/删除多行。为此,它不允许您在不传递 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;

【讨论】:

【参考方案3】:

“安全模式”在 MySQL 工作台中默认开启。您可以更改它转到左上角的mysqlworkbench –> 首选项–> sql 编辑器–> 取消选中安全模式,然后尝试重新连接。或者你可以输入

SET SQL_SAFE_UPDATES = 0;

这也是一样的。

【讨论】:

【参考方案4】:

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

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

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

【讨论】:

要应用此解决方案,请在取消选中后重新启动您的 MySQL 工作台,它将起作用。【参考方案5】:

[编辑] @ManojSalvi 知道了,工作台相关

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. |      *** |

【讨论】:

正如他已经解释的那样,它在工作台中不起作用,它与查询本身无关 @davejal 他只在我的帖子之后给我们错误消息,所以我找不到它与工作台相关,之后我用a comment指向error code: 1175 during UPDATE in MySQL Workbench的链接 好的,我删除了反对票,但您的回答仍然没有帮助,说明它对您来说很好。你应该试着找出为什么它对他不起作用 @davejal thx;重现错误是首先要做的事情:显示相同的代码工作可能有助于找到错误输入或与环境相关的错误(就像这个错误,因为它是工作台的安全模式,而不是mysql);但是,是的,我通常会尽力提供更多帮助;)

以上是关于更新查询在 mysql 工作台中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

不在,在声明中不起作用(预订)

自动缓存更新在 react apollo 中不起作用

更新查询在 codeigniter 中不起作用

使用子查询更新在雪花中不起作用

mysql:内部查询在 selectif 语句中不起作用

MySQL的更新命令在PHP中不起作用