如何修复使用计算列更改表的 mysql 脚本错误

问题描述 投票:0回答:1

我有下面的表更改脚本,它添加了一个计算机列,其中组合了被定义为大整数的国家/地区代码和移动设备(不要问为什么)

    alter table schema.clients 
    add phone varchar(50) null;

    update schema.clients
    set phone = Concat(trim(cast(country_code as char(10))), trim(cast(mobile as char(20))) )
    where country_code is not null and mobile is not null;

   create unique index idx_phone on schema.clients(id, phone);

每当我通过 mySQl Workbench 运行此脚本时,我都会收到以下错误:

错误代码:1175。您正在使用安全更新模式,并且您试图 更新没有使用 KEY 列的 WHERE 的表。 禁用 安全模式,在“首选项”->“SQL 编辑器”中切换该选项,然后 重新连接。

我的脚本有什么问题,我该如何纠正它?

mysql mysql-workbench
1个回答
0
投票

听起来您已打开“安全更新”。此功能旨在保护新用户免受自身侵害,打开后,where 子句中不包含唯一键或主键的所有更新(或删除)都将失败。这可以防止人们意外地完全忽略 where 子句并意外地发出不受限制的更新或删除,它的目的是有用的,但我自己从未发现它有帮助。

修复方法是在 SQL 客户端中禁用此选项。

请参阅 https://dev.mysql.com/doc/refman/8.4/en/mysql-tips.html#safe-updates 了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.