MySQL Workbench错误1175即使使用" Where"声明

时间:2016-12-09 15:26:45

标签: mysql mysql-workbench

我在"安全更新模式"中运行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。包括哪些陈述?

4 个答案:

答案 0 :(得分:1)

在Sql默认情况下启用了安全选项,该选项限制用户使用不适当的密钥删除或更新表中的数据。要将安全更新转到

edit->preferences->sql编辑器并取消选中首选项窗口底部的安全更新复选框,甚至可以删除或更新引用主键。

例如:我们假设我们有一个名为user_details的表,其中有四个字段(namenumberemailaddress),其中name是首要的关键。 所以你的删除语句看起来像这样

Delete from user_details where name="xxx";

注意:关闭安全更新后重新连接到数据库。即使您可以重新启动服务器,但重新连接本身也能正常工作。

希望这能解决您的问题。

答案 1 :(得分:0)

可能是一个非常简单的错误。尝试从用户界面中删除该行。见附图。

Select your table and right click in the grid view

press in apply to see the sql

here you will see the final query used by mysql

答案 2 :(得分:0)

Arnolio中提及comment

  

错误的重要部分是:“......没有使用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

成功

为什么第一个不起作用?

(我想将其发布为评论,但不允许格式化)