当前位置: 首页 > 知识库问答 >
问题:

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

孟浩慨
2023-03-14

我正在尝试更新名为premier\u products数据库中名为rep的表。该表的主键是rep_num

当我运行以下语句时:

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

我收到一个错误,上面写着“您正在使用安全更新模式,并且您试图更新一个没有使用键列的WHERE的表。”

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

MySQL服务器版本5.6。20

共有1个答案

乐宜民
2023-03-14

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

在你的情况下,试试看

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

附言:你为什么不给你的桌子起个前缀呢?像tbl_代表?只是一个想法。

 类似资料:
  • 我从这里下载MySQL ZIP Archive:https://dev.mysql.com/downloads/mysql/(Windows(x86,64位), ZIP Archive) 我从来没有使用zip文件安装。所以我遵循这个教程:https://www.youtube.com/watch?v=kJbwKQqwtoE 从youtube教程中,解压缩zip文件后,会出现 但是当我提取zip文件

  • 问题内容: 我刚刚安装并测试了elasticsearch,它看起来很棒,我需要知道一些东西,我有一个配置文件 在目录中 并且我插入了一个包含一个单词的文档,如果我搜索关键字, 它说什么也没找到… 在索引之前它不会干或我在配置中错过了一些东西.... 问题答案: 您的查询看起来如何? 您的配置看起来不太好。尝试:

  • 问题内容: 我知道静态方法在类级别。因此,我知道我不需要创建实例来调用静态方法。但我也知道我可以将静态方法(如LIKE)称为实例方法。这是我感到困惑的地方,因为我期望从null对象调用静态方法(就像在调用实例方法中一样)。我真的很感谢一些解释,为什么我错了一个期望。 这是示例代码: 问题答案: 通过实例调用静态方法不需要实例存在。只要编译器能够确定变量的类型,它就可以在评估表达式并丢弃结果后静态进

  • Java中的本质上是不可靠的。具体地说,我对接口的最大问题是,它需要一个不定义方法本身的方法行为。因此,如果遍历一个列表,您必须使用反射来访问它定义的行为。然而,在Java8中,我们现在有了默认方法,现在我问为什么在中没有默认的方法。 我理解为什么接口不能默认对象方法,但是,这是一个明确的设计决定,所以可以做出例外。 我有点想弃用并将其内部代码更改为类似以下内容: 然后继续使用使作为中的默认方法的

  • 我使用MVC页面中的Kendo DatePicker值构建了一个模型: 但是,如果我输入值,而不是单击日历并选择日期,它在这里不会得到值。我怎样才能得到这个数据?

  • 我有一个通过Interface Builder定义的布局约束视图。由于它们无法暂时停用,我决定通过拨打以下电话有选择地删除它们: 但是,之后约束仍然驻留在视图中。约束。此外,我还希望以编程方式添加约束(同样,因为我无法(取消)激活它们): 对我的方法的任何调用都会导致变量wasAdded的值NO。这也反映在用户界面上,它根本没有改变。 最后,我既不能以编程方式添加约束,也不能删除添加到情节提要的约