[MySQL错误代码:1175,在MySQL Workbench中进行UPDATE期间

问题描述 投票:724回答:17

我正在尝试更新列visited以为其提供值1。我使用MySQL工作台,并从工作台内部的SQL编辑器中编写语句。我正在编写以下命令:

UPDATE tablename SET columnname=1;

它给我以下错误:

您正在使用安全更新模式,并且尝试更新表时没有使用KEY列的WHERE要禁用安全模式,请切换选项....

我已按照说明进行操作,我未勾选safe update菜单中的Edit选项,然后未勾选Preferences,然后未勾选SQL Editor。仍然会出现相同的错误,并且我无法更新此值。请告诉我哪里出了问题?

mysql sql-update mysql-workbench
17个回答
1444
投票

看来您的MySql会话已设置为safe-updates option。这意味着如果不在where子句中指定键(例如primary key),则无法更新或删除记录。

尝试:

SET SQL_SAFE_UPDATES = 0;

或者您可以修改查询以遵守规则(使用primary key中的where clause)。


18
投票

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


14
投票

在MySQL Workbech版本6.2中,不退出Preference SQLQueries选项。


12
投票
SET SQL_SAFE_UPDATES = 0;

11
投票

在WorkBench上,我通过取消激活安全更新模式来解决它:


8
投票

最简单的解决方案是定义行限制并执行。出于安全目的而进行。


5
投票

由于回答了问题,并且与安全更新无关,所以这里可能是错误的地方;我将仅发布以添加信息。


4
投票

正确,对于大多数示例来说,这毫无意义。但是最后,我来到了下面的语句,它很好用:


2
投票

这是用于Mac,但对于其他操作系统,必须相同,除了首选项的位置。


422
投票

在执行UPDATE命令之前,请遵循以下步骤:在MySQL工作台中

  1. 转到Edit-> Preferences
  2. 单击"SQL Editor"选项卡和uncheck“安全更新” check box
  3. Query->Reconnect to Server//注销,然后登录
  4. 现在执行您的SQL查询

p.s。,无需重新启动MySQL守护程序!


142
投票
SET SQL_SAFE_UPDATES=0;
UPDATE tablename SET columnname=1;
SET SQL_SAFE_UPDATES=1;

100
投票

所需要做的就是:开始一个新查询并运行:

SET SQL_SAFE_UPDATES = 0;

然后:运行您试图运行的查询,该查询以前无法正常运行。


93
投票

无需将SQL_SAFE_UPDATES设置为0,我真的不鼓励它那样做。默认情况下,SAFE_UPDATES在REASON上处于启用状态。如果您知道我的意思,您可以开车不戴安全带和其他东西;)只需在WHERE子句中添加一个匹配所有内容(例如主键与0匹配)的KEY值,那么就不用编写:

UPDATE customers SET countryCode = 'USA'
    WHERE country = 'USA';               -- which gives the error, you just write:

UPDATE customers SET countryCode = 'USA'
    WHERE (country = 'USA' AND customerNumber <> 0); -- Because customerNumber is a primary key you got no error 1175 any more.

现在您可以放心,每条记录都会(ALWAYS)如期更新。


58
投票

错误代码:1175。您正在使用安全更新模式,并且试图更新不具有使用KEY列的WHERE的表。要禁用安全模式,请在“首选项”->“ SQL编辑器”中切换选项,然后重新连接。

暂时关闭“安全更新模式”

SET SQL_SAFE_UPDATES = 0;
UPDATE options SET title= 'kiemvieclam24h' WHERE url = 'http://kiemvieclam24h.net';
SET SQL_SAFE_UPDATES = 1;

永远关闭“安全更新模式”

Mysql工作台8.0:

MySQL Workbench => [ Edit ] => [ Preferences ] -> [ SQL Editor ] -> Uncheck "Safe Updates"

enter image description here旧版本可以:

MySQL Workbench => [Edit] => [Preferences] => [SQL Queries]

41
投票
  1. 首选项...

34
投票
SET SQL_SAFE_UPDATES=0;

26
投票

如果处于安全模式,则需要在where子句中提供ID。所以这样的事情应该起作用!

© www.soinside.com 2019 - 2024. All rights reserved.