执行DELETE关联查询触发Error Code:1175错误,求解决方案
解决MySQL安全更新模式下的关联DELETE错误
针对你执行关联删除重复邮箱记录时遇到的Error Code: 1175错误,即便尝试关闭安全模式仍无效的情况,可以试试以下几种方案:
方案1:临时关闭会话级安全模式
在执行DELETE语句前,先运行这条命令临时禁用当前会话的安全更新模式:
SET SQL_SAFE_UPDATES = 0;
接着执行你的DELETE语句:
DELETE e1 FROM employeedetail AS e1 INNER JOIN employeedetail AS e2 ON e1.email = e2.email AND e1.id < e2.id;
操作完成后,建议重新开启安全模式(可选):
SET SQL_SAFE_UPDATES = 1;
方案2:给DELETE语句添加符合要求的WHERE条件
安全模式要求更新/删除语句的WHERE子句必须使用KEY列,你可以给语句加一个不影响逻辑但包含主键的条件,比如:
DELETE e1 FROM employeedetail AS e1 INNER JOIN employeedetail AS e2 ON e1.email = e2.email AND e1.id < e2.id WHERE e1.id IS NOT NULL;
因为id是主键,必然不为空,这个条件不会过滤任何数据,但能满足安全模式的检测规则。
方案3:确认连接已重启
如果你是通过编辑器(比如Navicat、MySQL Workbench)修改的安全模式设置,务必完全断开数据库连接后重新连接,仅刷新页面或会话可能不会加载新的设置。
内容的提问来源于stack exchange,提问作者Balibhadra Singh
相关产品推荐
相关产品推荐

