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.