我在"安全更新模式"中运行MySQL Workbench 6.3.8 b1228 CE(64位)。我正在尝试使用 a" WHERE"运行查询声明,但它仍然返回"错误1175"
这是我的查询声明:
DELETE FROM `my_db`.`table_name` WHERE `email` = 'john@smith.com';
(显然" my_db"和" table_name"是占位符。)
为什么当我拥有最基本的" WHERE"时,Workbench会为此查询抛出错误1175。包括哪些陈述?
答案 0 :(得分:1)
在Sql默认情况下启用了安全选项,该选项限制用户使用不适当的密钥删除或更新表中的数据。要将安全更新转到
edit->preferences->sql
编辑器并取消选中首选项窗口底部的安全更新复选框,甚至可以删除或更新引用主键。
例如:我们假设我们有一个名为user_details
的表,其中有四个字段(name
,number
,email
,address
),其中name是首要的关键。
所以你的删除语句看起来像这样
Delete from user_details where name="xxx";
注意:关闭安全更新后重新连接到数据库。即使您可以重新启动服务器,但重新连接本身也能正常工作。
希望这能解决您的问题。
答案 1 :(得分:0)
答案 2 :(得分:0)
错误的重要部分是:“......没有使用KEY列的WHERE”。所以我要问的是电子邮件列是一个关键列?
我没有专注于KEY部分,而我的电子邮件列不是KEY,导致错误。谢谢,Arnolio!
答案 3 :(得分:0)
考虑:
update
civicrm_address
set
geo_code_1 = 99999
and
id is not null
这会引发相同的错误,但是
update
civicrm_address
set
geo_code_1 = 99999
and
id <> 0
成功
为什么第一个不起作用?
(我想将其发布为评论,但不允许格式化)