群里有同学问到这个问题。
理论上 第一条出错,第二条会停止。
譬如我们建一张表users ,表里就一个字段 ,username, varchar型,长度5 。
(具体建表自己建,我特么特别讨厌网上某些文章,写个技术分享,解决方案就2-3行,建表语句倒占了100行)
开始写两个sql语句 (注意分号)
insert into users(username) values(‘23232fwefwegwegwegwegwegwegweg’); //这个货肯定出错,长度超过了
insert into users(username) values(‘333’);
以上语句 可以放到navicat等查询分析器器里去执行。 第一条就会报错。
[Err] 1406 – Data too long for column ‘username’ at row 1
注意错误代码是:1406
mysql error code 有很多 譬如
1006:创建数据库失败
1007:数据库已存在,创建数据库失败
1008:数据库不存在,删除数据库失败
1009:不能删除数据库文件导致删除数据库失败
1406 就代表数据过长,更多的请自行百度
那么如果我就是想让第一句出错,第二句照样执行呢?
答案是可以的
1、写个存储过程
2、定义一个CONTINUE HANDLER
核心部分代码如下:
DECLARE aa int DEFAULT 0; #随便定义一变量
DECLARE CONTINUE HANDLER for 1406 set aa=1 ; #代表发生1406这个error code 后照样执行 下一句
insert into users(username) values(‘23232fwefwegwegwegwegwegwegweg’);
insert into users(username) values(‘333’);
这样,去执行这个存储过程。就会在第一行出错后,照样执行下一条。