mysql插入超过字段长度的新数据时,insert into on duplicate key和单纯insert into的区别
表结构如下
现在插入一个查过128(26的英文字符循环5遍即130个字符)的字符
insert into t_user (mold,open_id) values(1,‘ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ’);
执insert into语句效果如图
会报错
ERROR 1406 (22001): Data too long for column ‘open_id’ at row 1,原因 插入数据超过字段最大长度,使用MariaDB也是如此
使用MariaDB执行insert into on duplicate key效果如图
使用Mysql执行insert into on duplicate key效果如图
可见mysql和mariaDB在执行insert into on duplicate key 插入会更新一个超过表字段的字符串类型的字段是不一样的,mysql会报错,不会执行,mariaDB则会将舍弃超过字段大小的值,依然存入数据库,并会报一个警告,这是一个MariaDB的一个坑。