繁体   English   中英

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

[英]Why does MySQL think that I'm not using a WHERE statement?

我正在尝试在名为premier_products的数据库中更新名为rep的表。 表的主键是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表:

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

在你的情况下尝试

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM