Mysql2::Error: Specified key was too long; max key length is 767 bytesを解決する


現象

utf8mb4のカラム(name)に対してindexをはるときにエラーになってしまった

...
-- add_index("posts", ["name"], {:name=>"name_index"})
[ERROR] Mysql2::Error: Specified key was too long; max key length is 767 bytes: CREATE  INDEX `name_index`  ON `posts` (`name`)
...

このあたりの記事を見ると、いろんな方法があるみたい

対応

今回はcnfを書き換えてDBごと対応することにします。

cnfファイルの場所はmysql --help | grep my.cnfなどで調べます

/usr/local/etc/my.cnf
...
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix

homebrewでインストールした[email protected]を使っていたのでbrew servicesコマンドで再起動。

brew services restart [email protected]

以上です