5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MySql5.6で Mysql2::Error: Specified key was too long; max key length is 767 bytesエラーが出る時の解決法

Last updated at Posted at 2020-01-08

Mysql2::Error: Specified key was too long; max key length is 767 bytesエラーの解決法

MySql5.6以前のバージョンはこちらの記事が詳しいです


参加した友人とのプロジェクトで以下のコマンドを叩いたところ

bundle exec rake ridgepole:apply

以下のエラーに遭遇しました。

[ERROR] Mysql2::Error: Specified key was too long; max key length is 767 bytes

どうやらmy.cnfファイルが無く、そのせいで文字コードがutf8mb4ではなくutf8になってしまっているのが原因のよう。

mysql> show variables like "chara%";
+--------------------------+----------------------------------------------------------+
| Variable_name      | Value                          |
+--------------------------+----------------------------------------------------------+
| character_set_client   | utf8                           |
| character_set_connection | utf8                           |
| character_set_database  | utf8                           |
| character_set_filesystem | binary                          |
| character_set_results  | utf8                           |
| character_set_server   | utf8                           |
| character_set_system   | utf8                           |
| character_sets_dir    | /usr/local/Cellar/mysql@5.6/5.6.43/share/mysql/charsets/ |
+--------------------------+----------------------------------------------------------+
8 rows in set (0.00 sec)

上記でも紹介した記事を見ると、my.cnfファイルを以下のように編集すれば良いとのことでした。

[mysqld]
...
character-set-server=utf8mb4

[client]
default-character-set=utf8mb4

MySql5.6以前のバージョンはこれで上手くいくと思うのですが、5.6以降は以下のように編集しないとダメなようです。

[mysqld]
character-set-server=utf8mb4
innodb_large_prefix=1
innodb_file_per_table=1
innodb_file_format=Barracuda
innodb_file_format_max=Barracuda
[client]
default-character-set=utf8mb4

使うコマンドは以下。

touch /etc/my.cnf
vi /etc/my.cnf
mysql.server restart

自分の場合はこれで上手くいったので、同じエラーが出た方は試してみてください。

5
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?