JamesとMySQLのメモφ(`д´)

  • 投稿日:
  • カテゴリ:

忘れないように備忘録。

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

備忘録φ(`д´)メモメモ...

新しいサイトもよろしくお願いします!