如何在 Spring 应用程序中使用嵌入式数据库 MariaDB 为 db 和表指定 utf8 编码?

阿列克谢·多布罗什坦

开发 Web 应用程序 我想使用嵌入式数据库来存储数据。然而,我更喜欢使用自定义数据库而不是建议的内存数据库。我的选择是 MariaDB。我已经被这篇文章规定了如何在我的项目中将 MariaDB 作为嵌入式数据库,一切都很好,数据库出现,除了一件事:我无法更改表值的编码。

我试图在我的 application.yml 文件中设置额外的应用程序属性,试图用指定编码的参数来完成连接字符串,但不幸的是,所有这些东西都不起作用:( 可能你们中的任何人都遇到过这样的问题,可以帮助我? 先感谢您!

我当前的 application.yml 如下:

mariaDB4j:
  dataDir: ./localMariaDB
  port: 3307
  databaseName: embeddedDB
spring:
  datasource:
    url: jdbc:mariaDB://localhost:3307/
    username: root
    password:
    driver-class-name: org.mariadb.jdbc.Driver
  jpa:
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    hibernate:
      ddl-auto: create

最后我得到以下异常:

Caused by: java.sql.SQLException: Incorrect string value: '\xD0\x92 \xD1\x80\xD0...' for column 'current_status' at row 1
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readErrorPacket(AbstractQueryProtocol.java:1688) ~[mariadb-java-client-2.6.2.jar:na]
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readPacket(AbstractQueryProtocol.java:1550) ~[mariadb-java-client-2.6.2.jar:na]
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:1513) ~[mariadb-java-client-2.6.2.jar:na]
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:318) ~[mariadb-java-client-2.6.2.jar:na]
... 121 common frames omitted

顺便说一下,当我运行应用程序时,我得到的连接字符串看起来像jdbc:mysql://localhost:3307/embeddedDB. 我很困惑,为什么有:mysql:不是:mariadb:在我的连接属性中指定。它对我的数据库行为有影响吗?

阿列克谢·多布罗什坦

所以,我找到了我的问题的解决方案。它看起来像往常一样非常简单:) 要更改 MariaDB 建议的标准字符编码,我必须在设置 MariaDB 的DataSource. 由于源提供配置MariaDBSpringService实体以在DataSource配置中进一步使用,因此有必要MariaDBSpringService使用一些字符编码描述实用程序对其进行扩展 ( )。因此,要指定自定义编码(即更改标准编码),我刚刚将以下代码行添加到MariaDBSpringServicebean:

service.getConfiguration().addArg("--character-set-server=utf8mb4");
service.getConfiguration().addArg("--collation-server=utf8mb4_general_ci");

一般来说,完整的 bean 声明如下:

@Bean
public MariaDB4jSpringService mariaDB4jSpringService(){
    MariaDB4jSpringService service = new MariaDB4jSpringService();
    service.getConfiguration().addArg("--character-set-server=utf8mb4");
    service.getConfiguration().addArg("--collation-server=utf8mb4_general_ci");
    return service;
}

希望,这会帮助某人,他们可能会面临这样的问题))感谢所有试图帮助我的人!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Jenkins中将编码设置为UTF-8

Spring Boot UTF8编码

Hibernate + MySQL:如何为数据库和表设置编码utf-8

如何使用utf8将[] rune编码为[] byte

使用Sublime Text 3中的BOM将文件编码设置为UTF8

如何在Perl中将带重音符号和其他外来字符编码为UTF8

Ruby,Nokogiri:如何在整个nokogiri解析,erb模板和HTML文件编码中确保UTF8

如何在iOS的嵌入式专用框架和应用程序中使用静态库

如何使用jdbc和MySQL正确设置utf8编码?

使用python错误将'UCS-2 Little Endian'文件编码为'utf8'

NodeJS如何使用crypto-js或使用自定义密钥大小,iv,模式和填充以UTF8编码的加密包对(AES算法)数据进行加密

如何在独立(战争)和嵌入式Tomcat中为Spring-Boot应用程序配置数据源?

如何让R维护utf8编码?

如何打开STDIN / STDOUT处理并正确使用utf8编码?

Spring Integration Email出站网关:如何将内容编码设置为UTF-8?

如何使用PHP从数据库编码UTF8

如何自动将输入到表中的文本字段另存为utf8编码的数据?

压缩和utf8编码

为PostgreSQL数据库的C#中的UTF8编码过滤无效的字节序列

Perl DBI,MySQL中使用ő和ű字符的UTF8字符编码

如何将utf8编码的html嵌入元素

修复通过PDO编码的数据库,而不指定UTF8字符集

如何配置Spring Boot应用程序以支持UTF-8和GBK编码?

将 UTF8 字符编码为字节表或公式

使用 Spring MVC Web 应用程序以 html 形式强制 UTF8 编码

如何在delphi10中将字符串正确编码为UTF8?

.toString 不将字节编码为 utf8 文本?

如何将 Swift 算术运算符加号 (+) 正确编码为 utf8 数据?

使用 UTF8 编码的输出数组