我的最后一年的项目有问题。我正在使用Spring + Hibernate访问MySql DB。我将Tapestry用于视图层。
我需要在其中一个字段与枚举字段匹配的地方插入一行。枚举值之一是“Polígono”。我的数据库编码设置为UTF-8。
我将数据库转储到我解析的XML文件(自定义格式)中。目的是通过此XML文件在不同设备上创建数据库。我删除了测试数据库,并尝试从XML文件中还原它。单词“Polígono”按原样出现在文件中(UTF-8编码),但是如果我尝试使用服务和DAO插入它,我将得到此信息(tipo_via是我尝试插入该值的DB列):
Hibernate数据访问上的JDBC异常:SQL的SQLException [n / a];
SQL状态[01000];错误代码[1265];列的数据被截断
第1行为'tipo_via';嵌套异常为
org.hibernate.exception.GenericJDBCException:数据被截断
第1列的“ tipo_via”列
如果我打印从XML读取的内容(我尝试分配给行字段的字符串),则会在控制台上得到此信息:
PolÝgono
如果我创建一个带有“Polígono”值的字符串并打印,我将在控制台上找到:
PolÝgono
有人知道如何解决这个问题吗?这很奇怪。提前致谢
最佳答案
问题解决了。我认为我编写用于创建数据库的SQL脚本的文件不是采用UTF8编码的。我使用DB GUI管理器(SQLYog)检查了该字段的枚举值,并检查了这些值的编码是否错误。我解决了,问题解决了!