Spring Security Core plugin をMySQLで試した時のエラー

Grails Spring Security Core Plugin をMySQL5.5.27 で試したところ、下記のエラーが発生。


| Error 2013-04-29 11:11:59,426 [localhost-startStop-1] ERROR hbm2ddl.SchemaUpdate  - Unsuccessful: create table authority (id bigint not null auto_increment, version bigint not null, authority varchar(255) not null unique, primary key (id))
| Error 2013-04-29 11:11:59,427 [localhost-startStop-1] ERROR hbm2ddl.SchemaUpdate  - Specified key was too long; max key length is 767 bytes

 

原因:ユニークキーに指定したカラムの桁数オーバー

データ型がvarchar(255)、照合順序がutf8mb4_general_ci のカラムをユニークキーにしようとしたため、255×4=1020byteとなり桁あふれ。

 

対策:初期テーブル生成時はunique制約をドメインから外してテーブルを作成。後からDBとソースを修正。フィールドの文字コードを2byte文字にして、ユニークキーに設定した。

 

 

対策については下記のエントリが参考になりました。

http://d.hatena.ne.jp/tanamon/20090930/1254332746