Edited at

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でインストールしたmysql@5.6を使っていたのでbrew servicesコマンドで再起動。

brew services restart mysql@5.6

以上です