当前位置: 首页 > news >正文

spring-boot jpa mysql emoji utfmb4 异常处理

 

spring-boot jpa mysql utf8mb4


emoji 写入失败 mysql database,table,column 默认为utf8mb4

Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\xAD' for column 'title' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2484)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2079)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2013)
at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5104)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1998)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:175)
... 68 more

 

早期和spring-boot 1.4不会有这个问题

 

新服务应用spring-cloud 配spring-boot 就出错,网上各种方案都试了,都不生效。

基本思路都是在配置文件中设置connectionInitSql

 

spring-boot 2.0.0.RC2

mysql 5.7.14

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>




代码环境
spring-boot 2.0.0.RC2

多次尝试失败后,隐约有一个思路

这些办法有些是和spring-boot jpa有区别,虽然都是基于 jdbc hibernate的,但spring-boot jpa,可能会些区别。

在原文的环境是这些配置可能是生效的,但是在我的spring-boot jpa上不起作用

网上见的,都是对hibernate有效的方案(假设有效),但不适用spring-boot jpa

 

spring-boot的环境比较复杂,具体哪一步出问题

得到源码里查了,开玩笑的,这工作量就大了

这种问题有两种思路,看源码是正向的思路

最实际的办法是反向来看,反向看

异常里有hikari.pool,这是个以前没见过的sql连接池

参考  https://github.com/brettwooldridge/HikariCP#configuration-knobs-baby 官方配置

 

https://stackoverflow.com/questions/23172643/how-to-set-up-datasource-with-spring-for-hikaricp


http://www.cnblogs.com/yjmyzz/p/mysql-utf8mb4-jdbc.html

 

 

试了试

spring.datasource.hikari.connectionInitSql=SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;

 

问题解决

应该是这个连接池的哪个环节出问题了,本来应该加载spring-boot 配置参数的datasource实始化的,但这里是不生效。

单独指定datasource的实始化,才能解决问题

 

也许换个连接池也会解决这个问题

转载于:https://www.cnblogs.com/zihunqingxin/p/8650470.html

相关文章:

  • list.FindAll of C#
  • 关于emgucv控制多摄像头问题
  • 一分钟上手, 让 Golang 操作数据库成为一种享受
  • 逆序对问题
  • 14.boost最小生成树 kruskal_min_spainning_tree
  • CAP原则(CAP定理)、BASE理论
  • Google I/O 2014 大会总结 Android开发新方向
  • 模板中可以直接使用函数设定数据集,而不需要在控制器中给模板变量赋值传入数据集变量,如:...
  • 预防定时重启apache服务没有起来的脚本
  • iframe的用法
  • Unix系统编程()brk,sbrk
  • linux audit审计(2)--audit启动
  • 完美洗牌算法
  • STL::sort函数实现
  • Android中Activity和Service的数据通讯
  • [ JavaScript ] 数据结构与算法 —— 链表
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • gulp 教程
  • input实现文字超出省略号功能
  • interface和setter,getter
  • LeetCode18.四数之和 JavaScript
  • php的插入排序,通过双层for循环
  • Puppeteer:浏览器控制器
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Redux 中间件分析
  • RxJS: 简单入门
  • spring + angular 实现导出excel
  • TCP拥塞控制
  • Vim Clutch | 面向脚踏板编程……
  • vue-router 实现分析
  • 动态规划入门(以爬楼梯为例)
  • 基于 Babel 的 npm 包最小化设置
  • 小程序开发之路(一)
  • 优化 Vue 项目编译文件大小
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 数据可视化之下发图实践
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (12)目标检测_SSD基于pytorch搭建代码
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (算法)Travel Information Center
  • (转)visual stdio 书签功能介绍
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET业务框架的构建
  • @RequestParam详解
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149