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.jar
MySQL 5.5のライブラリで com.mysql.jdbc.Driver を使用しています。