忘れないように備忘録。
JamesのストレージにMySQLを利用すると、起動しません。
MySQLでは途中のバージョンからVARHCARのサイズ拡張が変更されており、VARCHAR(200)の場合は最大200バイトのはずですが(少なくともOracleではそうだったはず・・・)MySQLでは文字コード依存になります。200バイトではなく、200文字。なのでSJISの場合は1文字が2バイト扱いになり、UFT8では1文字が3バイト扱いになります。
そしてMySQLの制限の一つに、主キーのセットは1000バイト以下というものがあります。
JAMESのDDLによると、VARCHAR(200)とVARCHAR(255)を複合主キーとしているので、(200+255)*3=1365バイト。正確には1367バイトになるの?よくわかりません・・・。
こんな制限初めてしったよ(`□´)
もともとこの列の定義としては、200バイトという意味っぽいので列の定義に「CHARACTER SET latin1」を追加して回避しました。
VARCHAR(200) NOT NULL → VARCHAR(200) CHARACTER SET latin1 NOT NULL
備忘録φ(`д´)メモメモ...