博主分享免费Java教学视频,B站账号:Java刘哥
刚才在测试项目,随便复制文章添加的时候,突然报了个错误
org.springframework.orm.jpa.JpaSystemException: could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement
意思是:SQL 语句无法执行。
然后看最下面的异常信息,Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\xB3)\xE3...' for column 'content' at row 1。
复制错误,百度一下。
是编码的问题,数据库的编码,这个问题我已经记得遇到过一次。
同时也测试聊天中的发表情,无法成功!
原因和解决办法
原因是数据中存在emoj表情,而这些表情是按照四个字节一个单位进行编码的,而我们通常使用的utf-8编码在mysql数据库中默认是按照3个字节一个单位进行编码的,正是这个原因导致将数据存入mysql数据库的时候出现错误,那么这个问题我们应该怎么解决呢? 我分为下面三个步骤来解决: (1):修改mysql数据库的编码为uft8mb4 (2):修改数据表的编码为utf8mb4 (3):修改字段的编码为utf8mb4 (4):修改连接数据库的连接代码 现在就开始吧!1、修改数据库编码
(1)修改 mysql 配置文件 Windows 是my.ini,Linxu 和 Mac my.cnf 这里介绍 Mac 下的修改方法 编辑 /etc/my.cnf 文件 该文件仅可读,需要修改权限 sudo chown 755 /etc/my.cnf sudo vim /etc/my.cnf (2) Navicat Premium 软件里修改 数据库属性2、数据表修改
修改 article 表的编码 命令:alter table `article` convert to character set utf8bm4;
3、修改字段(必须改,这里是个坑)
同样用上面的代码,把一张表里所有的字段编码都改成 utfmb4
alter table `article` convert to character set utf8bm4;
4、修改数据库连接URL
把之前的那条注释掉,加上下面这条,也有的人直接把后面的参数都去掉
- #spring.datasource.url=jdbc:mysql://localhost:3306/forum?useSSL=false&useUnicode=true&characterEncoding=utf-8
- spring.datasource.url=jdbc:mysql://localhost:3306/forum?useSSL=false&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&rewriteBatchedStatements=TRUE
- 微信
- 交流学习,有偿服务
- 博客/Java交流群
- 资源分享,问题解决,技术交流。群号:590480292
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏