『 原创 』 【mysql】存表情出错 (Incorrect string value: '\xF0\x9F\x91\x93\xF0\x9F...' for column 'xxx' at row 1)

浮生半日梦。 后端技术 2018年12月17日 85 ℃ 0 3

更新了mysql8,感觉很良好,但发现存表情出现了问题,网上搜了搜,是字符编码的问题,我发现我的字符编码也没有问题,后来想了想,发现是建表的时候也得加上utf8mb4,下面就总结一下吧。

主要分五个部分:
  • 第一 、修改:数据库默认编码为utf8mb4。
  • 第二 、修连接数据库代码。 
  • 第三 、修改数据库的字符集编码。
  • 第四 、修改数据库表的字符集编码。
  • 第五 、修改对应表的字段的字符集编码。  

1.修改数据库默认编码

    找到数据库配置文件:

which mysql


    查看mysql使用的配置文件默认路径:

/usr/bin/mysql --verbose --help |grep -A 1 'Default options'

        或者直接使用下面的语句:

mysql --verbose --help |grep -A 1 'Default options'

    可以看到:


     可得配置文件 /etc/my.cnf   和 /etc/mysql/my.cnf  /usr/etc.my.cnf  ~/.my.cnf

vim /etc/my.cnf

    修改成下面的样子,都改为utf8mb4


    vim 打开后面几个文件,发现都是新文件,表示,真正的配置文件就是 /etc/my.cnf,后面就不需要考虑了。

2.修改数据库连接代码

    这一项就主要就是把连接代码中的utf8改为utf8mb4或者干脆省略编码配置utf8。

3.修改数据库字符集编码

    这一项的修改就很容易了,可以使用工具修改,这里使用的是navicat,邮件数据库名,编辑数据库,修改字符集和排序规则即可。


    

4.修改数据库表字符设置

可以使用命令

ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4;

5.修改数据库表中相关字段的字符集编码

可以使用工具修改


很多时候,在建立表的时候就应该如此了。例如

CREATE TABLE `notice` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`content` text COMMENT '内容',
`weigh` int(11) NOT NULL DEFAULT '0' COMMENT '权重',
`status` enum('1','2','3') NOT NULL DEFAULT '1' COMMENT '状态:1=正常,2=隐藏,3=回收站',
`regtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`pubtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '发布时间',
`uptime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

注意最后的字符集编码设置。

---------------

end

● 作者:浮生半日梦。
● 标题:【mysql】存表情出错 (Incorrect string value: '\xF0\x9F\x91\x93\xF0\x9F...' for column 'xxx' at row 1)
● 链接:https://www.aroad.xyz/article/17.html
● 來源:记忆荟 ● 风
● 版权:转载无需联系作者,但请注明出处。

评论:(0)
₍₍◡( ╹◡╹ )◡₎₎ no more ~