java - MySQL 数据库的 UPDATE 语句中出现两字节 UTF-8 字符错误

标签 java mysql jdbc groovy utf-8

更新语句似乎只适用于一到三个字节长的 UTF-8 字符。

我的测试代码

def sql = sql.newInstance('jdbc:mysql://.../...?useUnicode=true&characterEncoding=UTF-8',
            '...', '...', 'com.mysql.jdbc.Driver')
String value = 'β'
sql.execute('UPDATE Kldb_SynonymVersion SET synonyms=? WHERE id=11940', [value])

失败了

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'synonyms' at row 1

在 com.mysql.jdbc.MysqlIO.checkErrorPacket 中。

它适用于 value="a"或 value = '€'。

我正在使用

Java 1.6.0_20
MySQL 5.0.26
mysql 连接器 5.1.13

表格的字符集设置为utf8。

我知道我可以禁用截断,但我只是避免了异常并在数据库中得到了一个无效字符('?')。

最佳答案

你确定MySQL列的列编码是UTF-8吗

MySQL 驱动程序能够将 unicode 字符写入 ASCII 列,甚至可以正确读取它们,因此可以长时间不通知问题。

关于java - MySQL 数据库的 UPDATE 语句中出现两字节 UTF-8 字符错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3140538/

相关文章:

java - WAKEUP 在 notify/notifyall 上下文中真正意味着什么?

java - Hibernate 使用准备好的语句进行悲观锁定

java - java中的连接池允许通过jdbc url获取连接?

java - JDBC 返回带有正确语句的 MySQLSyntaxError 异常

java - 如何防止java.net.ConnectException : Connection timed out?

java - Admob 问题 - 无法实例化 fragment com.google.android.gms.$PlaceholderFragment

java - Log4j 配置 : how to use environment variable in yaml configuration file log4j2. yaml

java - 声明对 tools.jar 的 maven 依赖以在 JDK 9 上工作

php - 就像限制不能正常工作一样?

MySQL - 使用聚合函数加速查询的索引