摘要
Mysql 报错 ERROR 1175, 是因为启动的时候开启了
安全更新模式
导致的
报错信息如下
ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
SQL_SAFE_UPDATES
这个报错是因为在更新表的时候where条件中没有到没有含有KEY的列导致的
。
另外更新的时候没有where条件
也会报类似的错误
root@127.0.0.1 : auditAdmin 16:54:10> create table lc_temp(id int,name varchar(20)) ;Query OK, 0 rows affected (0.03 sec)root@127.0.0.1 : auditAdmin 16:54:23> update lc_temp set name='james';ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY columnroot@127.0.0.1 : auditAdmin 16:54:32>
注意开头提示的“你在使用安全更新模式”,参考Mysql官网,在启动mysql的时候使用"安全更新模式 --safe-updates
"相当于设置了如下命令SET sql_safe_updates=1, sql_select_limit=1000, max_join_size=1000000;
附加
这里说明下sql_select_limit
参数,为了防止出现不带where条件的全表查询导致资源浪费。如果表中的记录大于1000条的时候,只显示1000条记录
有两种方式解决
## modify sql_safe_updatesset sql_safe_updates=0;set sql_safe_updates=off;## limit select username from userinfo limit 10001;
当报错的时候检查,这个变量是开启的状态
root@127.0.0.1 : (none) 16:42:44> show variables like '%SQL_SAFE_UPDATES%'; +------------------+-------+| Variable_name | Value | +------------------+-------+ | sql_safe_updates | ON |+------------------+-------+1 row in set (0.00 sec)
修改为OFF
或者0
SET sql_safe_updates = 0; SET sql_safe_updates = OFF;
再去执行update,就没有问题
Refer to mysql-tips
作者:全栈运维
链接:https://www.jianshu.com/p/9b8125c87519
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦