更新语句似乎只适用于一到三个字节长的 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/