Grails / MySQL字段长度约束

时间:2012-06-08 00:38:14

标签: mysql grails gorm

我正在使用Grails 1.3.7和MySQL 5.1。 5.5。我有一个类定义一个字符串属性,如下所示:

class Topic {
    String name;
    User owner;
    // other fields

    static constraints = {
        name(blank: false, maxSize: 1024, unique: ['owner'])
    }
}

这适用于内存数据库,但是当我部署WAR文件时,我收到此错误:

12/06/07 17:09:48 ERROR hbm2ddl.SchemaUpdate: Unsuccessful: create table topic (id bigint not null auto_increment, version bigint not null, date_created datetime not null, description longtext, name longtext not null, owner_id bigint not null, primary key (id), unique (owner_id, name))
12/06/07 17:09:48 ERROR hbm2ddl.SchemaUpdate: BLOB/TEXT column 'name' used in key specification without a key length

如果我将maxSize规范更改为255,则一切正常。

我对文档的阅读是MySQL默认无法确定密钥长度来强制执行唯一性约束;为什么grails没有为此目的传递maxSize值?

更新:2012年6月8日 这是我正在使用的hibernate规范:

hibernate {
    cache.use_second_level_cache=true
    cache.use_query_cache=true
    cache.provider_class='net.sf.ehcache.hibernate.EhCacheProvider'
}

我正在使用带有MySQL 5.5的mysql-connector-java-5.1.7-bin.jar库的com.mysql.jdbc.Driver。

1 个答案:

答案 0 :(得分:1)

您使用的是哪个版本的mysql,varchar列的最大长度可能是255(在mysql 5.0.3之前) - 请参阅http://dev.mysql.com/doc/refman/5.0/en/char.html

您可以尝试将列类型更改为text