我正在尝试更新列 visited
以赋予它值1.我使用MySQL工作台,并且我'm writing the statement in the SQL editor from inside the workbench. I' m编写以下命令:
UPDATE tablename SET columnname=1;
它给我以下错误:
您正在使用安全更新模式,并且您尝试更新没有使用KEY列的WHERE的表要禁用安全模式,请切换选项....
我按照说明操作,然后取消选中 Edit
菜单中的 safe update
选项,然后选择 Preferences
然后 SQL Editor
. 仍然出现相同的错误,我无法更新此值 . 拜托,告诉我有什么问题?
15 回答
在MySQL Workbech 6.2版中,不退出Preference
SQLQueries
选项 .在这种情况下,可以使用:
SET SQL_SAFE_UPDATES=0;
我找到了答案 . 问题是我必须在表名前加上模式名称 . 即命令应该是:
谢谢大家 .
没错,大多数例子都没有意义 . 但最后,我来到以下声明,它工作正常:
如果您处于安全模式,则需要在where子句中提供id . 所以这样的事情应该有效!
要么
Go to
Edit --> Preferences
Click
SQL Queries
选项卡和 uncheckSafe Updates
复选框Query --> Reconnect to Server
现在执行你的SQL查询
首选项......
"Safe Updates" ......
重启服务器
看起来你的MySql会话有safe-updates option集 . 这意味着如果不在where子句中指定密钥(例如
primary key
),则无法更新或删除记录 .尝试:
或者,您可以修改查询以遵循规则(在
where clause
中使用primary key
) .由于问题得到了回答并且与安全更新无关,这可能是错误的地方;我发帖只是为了添加信息 .
我试图成为一个好公民并修改查询以使用将更新的临时表:
失败 . 将更新修改为:
那很有效 . 好吧 - 如果我总是添加键<> 0来绕过安全更新检查,或者甚至设置SQL_SAFE_UPDATE = 0,那么我在查询中丢失了'检查' . 我不妨永久关掉这个选项 . 我想它会删除和更新两个步骤而不是一个...但是如果你输入的速度足够快并且不再考虑关键是特殊的而是仅仅是一个令人讨厌的...
所需要的只是:开始一个新的查询并运行:
然后:运行您之前未运行的尝试运行的查询 .
这适用于Mac,但除了首选项的位置外,其他操作系统必须相同 .
我们尝试不安全的
DELETE
操作时得到的错误在新窗口中,取消选中选项
Safe updates
Then close and reopen the connection. No need to restart the service.
现在我们将再次尝试
DELETE
成功结果 .那么这个安全更新又是什么呢?这不是一件坏事 . 这就是MySql所说的 .
Using the --safe-updates Option
It is safe to turn on this option while you deal with production database. Otherwise, you must be very careful not accidentally deleting important data.
错误代码:1175 . 您正在使用安全更新模式,并且您尝试更新没有使用KEY列的WHERE的表要禁用安全模式,请在Preferences - > SQL Editor中切换选项并重新连接 .
Turn OFF "Safe Update Mode" temporary
Turn OFF "Safe Update Mode" forever
Mysql工作台8.0:
旧版本可以:
最简单的解决方案是定义行限制并执行 . 这样做是出于安全目的 .
No need to set SQL_SAFE_UPDATES to 0 ,我真的不鼓励它这样做 . 只需在WHERE子句中添加一个KEY-value,它匹配所有类似于主键的比较0,所以不要写:
现在您可以放心,每条记录都会像您期望的那样更新 .
执行UPDATE命令之前,请执行以下步骤: In MySQL Workbench
转到
Edit
- >Preferences
单击
"SQL Editor"
选项卡和uncheck
"Safe Updates"check box
Query
- >Reconnect to Server
//注销然后登录现在执行您的SQL查询
p.s., No need to restart the MySQL daemon!