0

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 {
    cache.use_second_level_cache=true
    cache.use_query_cache=true
    cache.provider_class='net.sf.ehcache.hibernate.EhCacheProvider'
}

mysql-connector-java-5.1.7-bin.jarMySQL 5.5のライブラリで com.mysql.jdbc.Driver を使用しています。

4

1 に答える 1

1

どのバージョンの mysql を使用していますか。varchar 列の最大長は 255 である可能性があります (mysql 5.0.3 より前) - http://dev.mysql.com/doc/refman/5.0/en/char.htmlを参照してください

列のタイプをテキストに変更してみてください

于 2012-06-08T05:30:32.320 に答える