Scala/Slick JDBC 使用类型安全配置的编码配置

Scala/Slick JDBC encoding configuration with typesafe config

我正在使用 Slick 构建 Scala 应用程序,其中我用 val db = Database.forConfig("mysql.dev") 加载 MySQLDriverbackend 并且我的 "application.conf" 文件看起来像

mysql = {
dev = {
    dataSourceClass = "com.mysql.jdbc.jdbc2.optional.MysqlDataSource"
    properties = {
      databaseName = "test"  
      user = "user"
      password = "password"
      serverName = "localhost"
      portNumber="3306"
    }
  }
}

我已成功将数据保存到使用默认 utf-8 编码的数据库中。但是,当我试图保存字符 P 时,我在数据库中以可怕的 ? 而不是输入字符结尾。

我想我没有声明我的连接需要使用 UTF-8,但是我在 forConfig 的文档中找不到该选项。

你知道我该如何解决这个问题吗? 谢谢。

对于 MySQL,在您的连接 URL 中添加参数 useUnicode=true&characterEncoding=UTF-8 应该可以解决问题,即

jdbc:mysql://<host>:<port>/<database>?useUnicode=true&characterEncoding=UTF-8

您可以使用此 link 来配置 url。

保持相同文件结构的 Sudhir 答案的替代方法是将properties 设置为:

properties = {
      databaseName = "test"  
      user = "user"
      password = "password"
      serverName = "localhost"
      portNumber="3306"
      characterEncoding="utf8"
      useUnicode=true
    }

utf8mp4 表情符号问题

for spring-boot

spring.datasource.hikari.connection-init-sql=SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;

http://slick.lightbend.com/doc/3.2.0/config.html

因为 slick 提供了 HikariCP 池,我认为 hikari 池可以解决这个问题然后尝试

mysql_orginal = {
  connectionPool = "HikariCP"
  driver = "com.mysql.jdbc.Driver"
  connectionInitSql ="SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci"
  url = "jdbc:mysql://127.0.0.1/table?useUnicode=true&characterEncoding=UTF-8"
  keepAliveConnection = true
  user = "root"
  password = "123456"
  numThreads = 4
  poolName="mysql_orginal_pool"
}

val ORIGIN_DB = Database.forConfig("mysql_orginal")

libraryDependencies += "com.typesafe.slick" %% "slick-hikaricp" % "3.2.0"

有效

演示:https://github.com/cclient/ScalaMysqlSync

参考:

http://slick.lightbend.com/doc/3.2.0/database.html#databaseconfig

https://github.com/slick/slick/blob/master/slick-hikaricp/src/main/scala/slick/jdbc/hikaricp/HikariCPJdbcDataSource.scala

https://github.com/slick/slick/blob/4674b977d9eeaf825d57808d48dbbfc37e47858c/doc/src/config.md#monitoring-indexmonitoring