mysql安全模式:什么满足要求?

yyhrrdl8  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(238)

我知道我可以在mysql中关闭安全模式,所以我不想解决这个问题。
我有一张简单的table:

create table rubbish(
    id int auto_increment primary key,
    stuff text,
    nonsense text
);

在这里 id 是主键。
打开安全模式后,我尝试以下操作:

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中的大多数错误消息一样,错误消息也没有帮助:

You are using safe update mode and you tried to update
a table without a WHERE that uses a KEY column

在所有情况下,我都使用了key列,因此消息没有解释任何内容。mysql实际需要我如何处理key列?

umuewwlo

umuewwlo1#

mysql数据库 SQL_SAFE_UPDATES 防止您在中误用密钥 UPDATE 以及 DELETE 声明。mysql引擎经过优化,可以理解给定的一些条件。

... WHERE `id` IS NOT NULL;

主键永远不能为null,因此始终为空 true . 同样的道理

... WHERE `id`=`id`;

... WHERE TRUE;

这些被认为是滥用钥匙。母鸡是禁止的。

相关问题