我有一个带有Joda LocalDate属性的域类。此属性必须是唯一的。
它使用H2工作,但使用MySQL数据库我在应用程序启动时出现此错误:
[SchemaExport.create(l.386)]Unsuccessful: create table [...]
[SchemaExport.create(l.387)]BLOB/TEXT column 'mydate' used in key specification without a key length
如果删除唯一约束,它也适用于MySQL。
这是一个错误还是我的误解?
我正在使用Grails 2.2.5。 域片段:
class MyClass {
LocalDate mydate
static constraints = {
mydate(nullable:false, unique:true)
}
}
DataSource配置片段:
dataSource {
dbCreate = "create-drop"
driverClassName = "com.mysql.jdbc.Driver"
dialect = org.hibernate.dialect.MySQL5InnoDBDialect
username = "xxx"
password = "xxx"
dbNamer = "myapp"
url = "jdbc:mysql://localhost:3306/${dbNamer}?autoreconnect=true"
logSql = true
}
答案 0 :(得分:0)
date
是mySQL中的保留字。重命名该字段,然后重试
更新:
好的,我明白了。 问题是,GORM / Hibernate不知道jodaLocalDate
类,所以它试图为它创建一个BLOB列:
[SchemaExport.create(l.387)] BLOB / TEXT专栏' mydate'`。
要修复它,您可以使用自定义hibernate类型(不知道如何),或者通过保存将属性转换为平面java Date
类,然后返回{{1}加载后