MySQL中遇到的坑

1、delete语句不能删除表中所有的数据.

问题:

delete语句不能删除表中所有的数据.

报错:

2020年05月04日00:08:17

​    delete from school.student    Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column.  To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.    0.00030 sec

原因:

mysql有个叫SQL_SAFE_UPDATES的变量,为了数据库更新操作的安全性,此值默认为1,所以才会出现更新失败的情况。

SQL_SAFE_UPDATES = 1时,不带where和limit条件的update和delete操作语句是无法执行的,即使是有where和limit条件但不带key column的update和delete也不能执行。

SQL_SAFE_UPDATES = 0时,update和delete操作将会顺利执行。那么很显然,此变量的默认值是1。

解决:

SQL_SAFE_UPDATES = 0;//shell运行这个
SET SQL_SAFE_UPDATES = 0;//工具运行这个

再运行delete from school.student;搞定.

2、DELETE语句删除数据之后,自动增长并不会初始化.

问题:

DELETE语句删除数据之后,自动增长并不会初始化.

报错:

原因:mysql认为其数值已经存在,只会继续追加

解决:

重排auto_increment有2种方法:

1、清空表时使用truncate命令,而不用delete命令

mysql> truncate table table_name;

使用truncate命令的好处:

1)、速度快

2)、可以对自增ID进行重排,使自增ID仍从1开始计算

2、清空表数据后,使用alter修改表

格式:

mysql>alter table table_name auto_increment=1;

Q.E.D.