mysql插入超过字段长度的新数据时,insert into on duplicate key和单纯insert into的区别

表结构如下
mysql插入超过字段长度的新数据时,insert into on duplicate key和单纯insert into的区别
现在插入一个查过128(26的英文字符循环5遍即130个字符)的字符
insert into t_user (mold,open_id) values(1,‘ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ’);

执insert into语句效果如图
mysql插入超过字段长度的新数据时,insert into on duplicate key和单纯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和单纯insert into的区别
使用Mysql执行insert into on duplicate key效果如图
mysql插入超过字段长度的新数据时,insert into on duplicate key和单纯insert into的区别

可见mysql和mariaDB在执行insert into on duplicate key 插入会更新一个超过表字段的字符串类型的字段是不一样的,mysql会报错,不会执行,mariaDB则会将舍弃超过字段大小的值,依然存入数据库,并会报一个警告,这是一个MariaDB的一个坑。