为什么MySQL认为我没有使用WHERE语句?

时间:2014-11-09 23:09:46

标签: mysql mysql-workbench

我正在尝试在名为rep的数据库中更新名为premier_products的表。表的主键是rep_num

当我运行以下声明时:

update rep 
set last_name = "Perry"
where rep_num = 85;

我收到一条错误消息“您正在使用安全更新模式,并且您尝试更新没有使用KEY列的WHERE的表。”

我用Google搜索了该错误消息,大多数回复都是“您必须使用where子句或关闭安全模式”。但正如您所看到的,我使用where子句。如果我有where子句,为什么会出现错误?

MySQL服务器版本5.6.20。

此图显示rep_num绝对是我的主键:

此图显示当前的rep表:

1 个答案:

答案 0 :(得分:1)

虽然您只保存数字,但您的主键类型是char(2)而不是tinyint(2),当您更新记录时,您将提供数字值,而不是 char 在你的条件下的价值。我认为索引机制会触发错误并告诉您,您的位置不安全或可能产生错误结果。

在您的情况下尝试

update rep 
set last_name = "Perry"
where rep_num = '85';

PS:为什么不用前缀命名你的桌子?喜欢tbl_rep?只是一个想法。