0
0

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.

rails db:migrateが失敗!

Posted at

##rails db:migrateを実行した際のエラー

rails db:migrateを実行すると
以下のエラーが出ました!

StandardError: An error has occurred, all later migrations canceled:

直訳すると以後の全てのマイグレーションでエラーが発生しキャンセルされましたという内容です。

更に、こんなエラーも出ています。

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

こちらのエラーは指定したキーが長すぎるためエラーが発生しているようです。
maxのkeyの長さは767bytesのようです。

##今回のエラーの仮説
keyの長さがmax767バイトなのに対し、keyが長すぎたためエラーが発生しているようです。

railsでデフォルトで生成される255文字のVARCHER型の場合、

utf8mb4は1文字4バイト
255×4バイト= 1020バイト
 
767バイトを超えてしまうためエラーが発生してしまいます。

##解決法
文字コードの指定をutf8に変える

◎utf8は1文字3バイト、
255×3バイト= 765バイト

ほぼぴったり収まるためこれで解決できます!

database.yml

   default: &default
   encoding: utf8
   

bundle installをし、rails sで再起動をします!

その後、

$ rails db:migrate:reset

これで無事にマイグレーションされました!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?