尝试将条目从我的应用程序保存到mysql DB时出现此错误
Hibernate操作:无法执行语句;未分类 SQL [n / a]的SQLException; SQL状态[HY000];错误代码[1366]; 字符串值不正确:列的'\ xE2 \ x80 \ x8BShe ...' 第1行'extracted_text';嵌套异常是java.sql.SQLException: 字符串值不正确:列的'\ xE2 \ x80 \ x8BShe ...' 第1行的'extracted_text' 在com.some.scanner.RequestService。$ tt__handleMessage(RequestService.groovy:67)
我的表格创建如下:
CREATE TABLE `request` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`version` bigint(20) NOT NULL,
`doc_hash` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`extracted_text` longtext COLLATE utf8_unicode_ci,
PRIMARY KEY (`id`),
KEY `FK414EF28FD3E87920` (`batch_id`),
) ENGINE=InnoDB AUTO_INCREMENT=20025 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
我的实体映射在Grails中非常简单
class Request {
String docHash
String extractedText
static mapping = {
extractedText type: 'text'
}
}
我是否需要更改编码类型?如果是这样,到底是什么?
答案 0 :(得分:0)
设置数据库属性useUnicode
和characterEncoding
。它们直接传递给您的JDBC驱动程序:https://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/tomcat/jdbc/pool/PoolConfiguration.html#getDbProperties%28%29
dataSource {
url = 'jdbc:mysql://...'
properties {
dbProperties {
useUnicode=true
characterEncoding='UTF-8'
}
}
}
关于MySQL Connect字符集(包括UTF-8
的拼写)的更多内容:http://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-charsets.html
特定于MySQL的配置属性进入dbProperties
:http://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html
...除非它们已被http://docs.grails.org/latest/guide/conf.html#dataSource的主要dataSource
属性覆盖
或者来自:http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#Common_Attributes
properties