插入emoji到mysql时提示了一个表里不存在的字段的错误

1.问题描述

由于公司前端有需求,需要在tiny_user_info表的nickname这个字段里存入emoji表情,于是我熟练地将这个字段修改为utf8mb4,改好后测试插入一条带emoji数据。于是报了这个错误:

[2020-04-29 15:57:25] [HY000][1366] Incorrect string value: '\xF0\x9F\x98\x98' for column 'user_name' at row 14

当时我就傻了,我这个表里也没有user_name这个字段啊,怎么会报这个字段错误,我明明修改的是nickname这个字段啊。于是google和百度搜了一圈,无解。

2.解决方案

试了好几种方法,删字段,重新建。删表,重新建。都不行。。。。。静下心来,于是打算从mysql服务器入手。进入到mysql对应库的文件夹,发现tiny_user_info这个表有三个文件

图片

和常见的多了一个TRG文件。这是一个触发器文件,打开一看,发现了user_name字段。。。。。。

原来是同事在这个表里加了个触发器,当tiny_user_info里新增数据时,会触发新增到另一张表里,nickname的值同时会插入到另一张表的user_name字段,而他那张表的字段没有设置utf8mb4编码,所以导致插入失败。于是叫同事把他那张表设置一下utf8mb4编码后,就可以正常插入了。