mysql安全模式:mysql发现delete、update语句没有添加where或者limit条件时会报错。整个sql将无法执行,有效防止了误删表的情况。

安全模式设置

在mysql中通过如下命令查看状态:

 show variables like 'sql_safe_updates';
  • set sql_safe_updates=1; //打开
  • set sql_safe_updates=0; //关闭

设置为ON之后

  • update语句:where条件中列(column)没有索引可用且无limit限制时会拒绝更新。where条件为常量且无limit限制时会拒绝更新。
  • delete语句: ①where条件为常量,②或where条件为空,③或where条件中 列(column)没有索引可用且无limit限制时拒绝删除。

测试

打开安全模式进行测试

1.无where的update和delete

delete from t_user

delete from t_user> 1175 - You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column> 时间: 0.001s
update t_user set name='123'> 1175 - You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column> 时间: 0.001s
delete from  t_user where name='123'> 1175 - You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column> 时间: 0.007s

delete from t_user where name='123' limit 1

delete from  t_user where name='123' limit 1> Affected rows: 0> 时间: 0.002s
delete from  t_user where group_id='123'> Affected rows: 0> 时间: 0s
  • 使用where子句,并且where子句中列必须为prefix索引列
  • 使用limit
  • 同时使用where子句和limit(此时where子句中列可以不是索引列)

delete语句必须满足如下条件之一才能执行成功

  • 使用where子句,并且where子句中列必须为prefix索引列
  • 同时使用where子句和limit(此时where子句中列可以不是索引列)一才能执行成功。

更多相关文章

  1. android有效解决加载大图片内存溢出的问题
  2. Android获取当前位置信息,百分之百有效
  3. Android(安卓)SDK无法更新解决方式(非常有效)
  4. 【如何在不同Android设备中得到有效的AudioRecord实例】
  5. Android(安卓)隐藏底部导航栏后,第一次点击失效,第二次点击有效
  6. Android高效加载大图、多图解决方案,有效避免程序OOM
  7. Android(安卓)有效的解决内存泄漏的问题实例详解
  8. CheckBox 设置style 没有效果的原因
  9. Android有效解决加载大图片时内存溢出的问题

随机推荐

  1. Java中对XML的解析详解
  2. 基于PHP对XML的操作详解
  3. 关于html嵌入xml数据岛如何穿过树形结构
  4. php操作XML、读取数据和写入数据的实现代
  5. java使用xpath解析xml示例分享
  6. java对XML文件的解析、节点的增加、删除
  7. php操作xml入门之xml基本介绍及xml标签元
  8. java中使用sax解析xml的解决方法
  9. java生成XML的方法
  10. php操作xml入门之xml标签的属性分析