我正在尝试在名为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表:
答案 0 :(得分:1)
虽然您只保存数字,但您的主键类型是char(2)而不是tinyint(2),当您更新记录时,您将提供数字值,而不是 char 强大的>在你的条件下的价值。我认为索引机制会触发错误并告诉您,您的位置不安全或可能产生错误结果。
在您的情况下尝试
update rep
set last_name = "Perry"
where rep_num = '85';
PS:为什么不用前缀命名你的桌子?喜欢tbl_rep?只是一个想法。