插入表情符号不适用于 spring-boot 和 MariaDB

2023-12-07

我想在 mariaDB 数据库中插入像 ???? 这样的表情符号,但我总是收到 sql 错误。

这是堆栈跟踪:

12-01-2018 16:01:44.466 [Executor - Migration - 1] WARN  o.h.e.jdbc.spi.SqlExceptionHelper.logExceptions:129 - SQL Error: 1366, SQLState: 22007
12-01-2018 16:01:44.466 [Executor - Migration - 1] ERROR o.h.e.jdbc.spi.SqlExceptionHelper.logExceptions:131 - (conn:498) Incorrect string value: '\xF0\x9F\x92\xB3\xF0\x9F...' for column 'notes' at row 1
Query is: insert into customer (backend_archiving_date, backend_creation_date, backend_update_date, genius_client_id, address, birthday, city, company_name, country, email, fidelity_account_id, first_name, last_name, notes, phone, siret, zip_code, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?), parameters [<null>,'2018-01-12 15:01:44.454','2018-01-12 15:01:44.454',2159,'20 rue raspail
',<null>,'LEVALLOIS PERRET','','FRANCE','','00c55854-99df-4db1-88b9-34f7e5608477','claude','amsellem','????????????????','','','92300','2152ed7d-80a1-4305-9fcb-4e21f5947e32']

我的 Maria 数据库,表中有

ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

并且字段“notes”也有“utf8mb4 - Unicode”字符集。

当我通过 sql 查询插入时

update customer set notes='????????????????' where id = 'f5920301-5ee0-4d58-a786-d4701d9e9d73';

它有效,但是当我想用我的程序(spring-boot、spring-data-jpa、hibernate)插入表情符号时,我总是收到错误(请参阅堆栈跟踪)。

EDIT

仅供参考,这是创建脚本

CREATE TABLE `customer` (
`id` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`first_name` varchar(256) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`last_name` varchar(256) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`phone` varchar(256) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`email` varchar(256) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`birthday` date DEFAULT NULL,
`notes` varchar(2048) DEFAULT NULL,
`address` varchar(256) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`city` varchar(256) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`country` varchar(256) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`zip_code` varchar(256) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`company_name` varchar(256) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`siret` varchar(256) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`fidelity_account_id` char(36) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`backend_creation_date` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`backend_update_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`backend_archiving_date` timestamp NULL DEFAULT NULL,
`genius_client_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
KEY `fk_customer_fidelity_account` (`fidelity_account_id`),
CONSTRAINT `fk_customer_fidelity_account` FOREIGN KEY (`fidelity_account_id`) REFERENCES `fidelity_account` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

EDIT 2

这是连接参数(spring-boot application.yml)

# Datasource configuration
spring:
  datasource:
    type: "com.zaxxer.hikari.HikariDataSource"
    url: "jdbc:mariadb://localhost:3306/genius_back useUnicode=yes&characterEncoding=UTF8"
    hikari:
      driver-class-name: "org.mariadb.jdbc.Driver"
      username: "mariadb"
      password: "mariadb"
      minimum-idle: 5
      maximum-pool-size: 20
      validation-query: "SET NAMES utf8mb4"
  jackson:
     serialization:
      write_dates_as_timestamps: false
  http:
     client-user-agent: "Genius"
     multipart:
      max-file-size: 100Mb
      max-request-size: 150Mb

好的, 我发现了问题。

解决方案是添加

spring:
  datasource:
     connectionInitSql: "SET NAMES 'utf8mb4'" 

在 application.yml 中。

connectionInitSqlHikariCP 在打开连接时使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

插入表情符号不适用于 spring-boot 和 MariaDB 的相关文章

随机推荐

  • Android 应用程序的 Facebook 登录(使用释放密钥)

    我正在尝试在 Google Play 上发布我的应用程序 我的应用程序中有 Facebook 登录信息 直到昨天 一切都工作正常 直到我运行应用程序时debug keystore 但是 当我使用自己的发布密钥并签署我的应用程序时 Faceb
  • 如何在Electron框架中使用html模板?

    我需要构建一个具有多个窗口的跨平台应用程序 所以我想知道如何在Electron中使用html模板 基于类似的问题据我所知 Electron 中没有内置的 html 模板语言 这实际上很棒 因为它允许您使用任何其他模板语言 我目前正在玩ejs
  • 使用远程计算机通过 JupyterLab 打开网站(类似于代理)

    我通过连接SSH到正在运行的远程计算机JupyterLab 当我在中运行以下代码时JupyterLab我看到我的本地计算机的 IP 地址 from IPython display import IFrame IFrame src https
  • 如何在 Android 中的列表视图中显示 Dropbox 文件?

    我已经在这里浏览答案有一段时间了 并在我的代码中使用了大部分答案 但它似乎仍然不起作用 我只想显示 Dropbox 帐户中内容的列表视图 并为用户提供下载文件 文件夹的选项 我的 MainActivity 过去常常在打开后立即崩溃 用处理
  • 如何使用 CURL 请求构建、准备和设置 JWT 授权承载令牌

    为了发送和接收授权持有人 我确实阅读了此内容使用 cURL 设置 Bearer 令牌的正确方法和这个如何正确使用 Bearer 代币 这是我的代码 url http www example com phpinfo php data arra
  • 从不可变类型继承[重复]

    这个问题在这里已经有答案了 我想知道继承是如何运作的int list string和其他不可变类型 基本上我只是继承一个这样的类 class MyInt int def init self value 我似乎无法弄清楚 如何设置像它所设置的
  • DataGridView 的自定义单元格绘制的文本溢出

    这是我的细胞绘画方法 DataGridView grid DataGridView sender if e RowIndex 1 e ColumnIndex 1 return if grid Rows e RowIndex Cells e
  • XAML 数据绑定类单例 MVVM 对象

    NOTES 我是一个菜鸟 有时我会陷入简单和 或愚蠢的想法 这就是其中之一 我了解了数据绑定的一般概念 我已经浏览了网上的一些教程 并通过大量文本在谷歌上搜索了几个小时 这只是让我有点困惑 PROBLEM 我正在尝试Windows Phon
  • 输入“=”作为单元格中的第一个字符

    我有一个正在运行的 VBA 宏 并且通常需要将 作为单元格中的第一个字符 单元格中填充有 Domestic Domestic 等值 现在 我将 替换为 IS 作为快速修复 但如果我可以保留等号 我希望它能够与使用 等符号的单元格保持一致 当
  • 使用 GWT 上传前检查文件大小

    我正在使用 FormPanel 将文件上传到服务器 我想做的是在上传之前确保文件大小小于给定大小 例如 10MB 在服务器端 我有一个 javax servlet http HttpServlet 我在其中重写 doPost 这里 Http
  • Golang 依赖管理最佳实践

    在Golang中 我们可以指定GitHub上的开源库作为依赖项 例如 import github com RichardKnop somelibrary 这将尝试根据您的 Go 版本查找分支 如果我理解正确的话 默认为 master 因此无
  • 在php中写入exif数据

    我正在尝试创建一个网站 可以在其中添加和修改 JPEG 文件中的元数据 有没有一种方法可以让我以相当简单的方式写入 exif 数据 我见过一两个例子 但它们太复杂 在我给出的时间范围内无法掌握 我了解 IPTC 并且我知道可以将元数据添加到
  • 查看 div 是否包含一个或多个输入的单词(Javascript)

    我想检查是否有任何 div 包含在输入字段中输入的所有单词 然而 目前我陷入了这样一种情况 一旦输入空格 它就会重新开始 因此有点像 OR 运算符而不是 AND 运算符 有人可以把我推向正确的方向吗 多谢 这是我到目前为止所拥有的 div
  • Python:如何在Python中运行嵌套并行进程?

    我有一个数据集df交易者的交易 我有 2 个级别的 for 循环 如下所示 smartTrader for asset in range len Assets df df df Assets asset I have some more c
  • 简单的 Ajax/Codeigniter 请求

    我在使用 ajax 和 codeigniter 时遇到一些问题 我已经发布了另一个问题 问题链接 我以为我解决了它 但我没有 所以我要求某人用 ajax codeigniter 编写简单的代码 这将在点击时增加 div span 内的数字
  • 类组件内的react-router-dom useParams()

    我正在尝试加载基于react router dom 路由的详细信息视图 该路由应该获取URL 参数 id 并使用它来进一步填充组件 我的路线看起来像 task id我的组件加载得很好 直到我尝试从 URL 中获取 id 如下所示 impor
  • 使用 try/catch 无意中拦截 Mnesia 的事务重试会导致各种奇怪的情况

    因此 我在一次事务中对记录集进行 CRUD 操作时遇到了各种麻烦 这导致我在这里发布两个问题 Trouble and 更多麻烦 However 我认为这两个问题都是由以下原因造成的 在我的事务中 我将 mnesia writes reads
  • Magento 使用安装脚本添加属性

    我遵循了一些教程并编写了这段代码 这是install 0 1 0 php installer this installer gt startSetup allowCP array group gt Prices type gt text a
  • 升级 pip 失败,并因 sys.stderr.write(f"ERROR: {exc}") 导致语法错误

    在使用 box Bento centos 7 的新 Vagrant VM 上 以下命令损坏了我的 pip 安装 yum update yum install epel release y yum install python pip y u
  • 插入表情符号不适用于 spring-boot 和 MariaDB

    我想在 mariaDB 数据库中插入像 这样的表情符号 但我总是收到 sql 错误 这是堆栈跟踪 12 01 2018 16 01 44 466 Executor Migration 1 WARN o h e jdbc spi SqlExc