首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL安全模式:什么满足需求?

问MySQL安全模式:什么满足需求?
EN

Stack Overflow用户
提问于 2018-07-21 02:36:58
回答 1查看 245关注 0票数 1

我知道我可以在MySQL中关闭安全模式,所以我不想解决这个问题。

我有张简单的桌子:

代码语言:javascript
复制
create table rubbish(
    id int auto_increment primary key,
    stuff text,
    nonsense text
);

这里,id是主键。

打开安全模式后,我尝试如下:

代码语言:javascript
复制
update rubbish set nonsense=stuff where id=id;          -- fails
update rubbish set nonsense=stuff where id is not null; -- fails
update rubbish set nonsense=stuff where id<>0;          -- works

与MySQL中的大多数错误消息一样,错误消息也没有帮助:

代码语言:javascript
复制
You are using safe update mode and you tried to update
a table without a WHERE that uses a KEY column

在所有情况下,我都使用了键列,所以消息什么也解释不了。MySQL实际上要求我对键列做什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-21 03:37:35

MySQL SQL_SAFE_UPDATES 防止您在UPDATE和DELETE语句中误用键。为了了解给出的一些条件,对MySQL引擎进行了优化。

代码语言:javascript
复制
... WHERE `id` IS NOT NULL;

主键永远不可能为null,因此这始终是true。同样的也适用于

代码语言:javascript
复制
... WHERE `id`=`id`;

和

代码语言:javascript
复制
... WHERE TRUE;

这些被认为是对钥匙的误用。他们是被禁止的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51452334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档