Specified key was too long; max key length is 1024 bytes
Rails×MySQL環境下でindex作成時にエラーしてmigrateが止まった。 indexの最大幅を超えてたみたい。
Specified key was too long; max key length is 1024 bytes
migrationファイルを修正して対応した。以下メモ。
VARCHAR(255)
https://dev.mysql.com/doc/refman/5.6/ja/string-type-overview.html MySQL は、文字カラム定義の長さ指定を文字単位で解釈します。これは、CHAR、VARCHAR、および TEXT 型に適応されます。 → VARCHAR(255)は、255文字まで入る。(255byteではない)
RailsMigrationFileではlimit値で長さ指定ができる
change_column :table_name, :col_name, :string, { null: false, default: '', limit: 80 # limitで指定すればいい }
文字コード別: 1文字あたりのバイト数
UTF-8: 最大3バイト
utf8mb4(UTF-8に補助文字を足したもの): 最大4バイト
EUC: 最大3バイト
https://dev.mysql.com/doc/refman/5.6/ja/charset-unicode-utf8mb4.html
https://software.fujitsu.com/jp/manual/manualfiles/m150018/b1ws1136/04z200/b1136-i-03-04.html