码迷,mamicode.com
首页 > 数据库 > 详细

scala slick mysql utf8mb4 支持

时间:2018-05-02 21:11:11      阅读:326      评论:0      收藏:0      [点我收藏+]

标签:java项目   配置   except   bsp   连接   数据库同步   同步服务   utf8   两种   

语言  scala 

sql包  slick 3.2.0

数据库  mysql

 

数据库同步程序报错

java.sql.SQLException: Incorrect string value: \xF0\x9F\x87\xB5\xF0\x9F... for column content at row 1

 

这个错误见的太多,emoji字符和utf-8不兼容所致,utf8mp4字符集支持emoji

 

源库(另外一家公司提供)改了表的字符集,未通知我方,从库和源库字符集不同,同步时部分字符报错

 

改mysql,改同步程序字符集即可

 

改mysql简单

ALTER TABLE table  CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

同步服务用scala实现,引用的slick

 

slick比较小众 改utf8mb4全网都没什么资料,不过思路和传统java项目一致

 

官方配置若无相关参数,也有ini办法解决,因此有两种方式


原连接方式为

val DEST_DB = Database.forURL("jdbc:mysql://127.0.0.1:3306/table?characterEncoding=UTF-8&charset=utf8mb4", user = "root", password = "123456", driver = "com.mysql.jdbc.Driver")


解决方式两种


1 手动run 执行ini语句

val DEST_DB = Database.forURL("jdbc:mysql://127.0.0.1:3306/table?characterEncoding=UTF-8&charset=utf8mb4", user = "root", password = "123456", driver = "com.mysql.jdbc.Driver")

ORIGIN_DB.run(sql"""SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci""".as[Int])

 

2 通过jdbc ini 实始化

val ORIGIN_DB = Database.forURL("jdbc:mysql://127.0.0.1:3306/table?charset=utf8mb4;INIT=\"SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci\"", user = "root", password = "123456", driver = "com.mysql.jdbc.Driver",executor = AsyncExecutor("orgindb", minThreads=1, queueSize=10,maxThreads=10,maxConnections=10),keepAliveConnection=true)

 

 

scala slick mysql utf8mb4 支持

标签:java项目   配置   except   bsp   连接   数据库同步   同步服务   utf8   两种   

原文地址:https://www.cnblogs.com/zihunqingxin/p/8981931.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!