LoginSignup
0
0

More than 3 years have passed since last update.

deviseでusersテーブルを作成しようとした時に発生したMysql2::Error:Specified key was too long; max key length is 767 bytesのエラー対処法

Posted at

基本的には何もいじらずデフォルトの設定でマイグレーションしようとしただけなのでそれでエラー出るってどうよっていう話ですが、gem入れた後に

rails g devise user

でモデル作って何も触らず

rails db:migrate

しようとしたら

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

とエラーが出ました。
原因はこちらの記事に実にわかりやすくまとまっていました。
emailの文字数制限を変えることで解決する方法が載っていました。

自分はめっちゃ長いメールアドレスあったらどうすんねんとか訳のわからない意見が自分の中に湧き上がってきたので別の方法で解決しました。ええ。文字コード自体変えました。

database.yml
default: &default
  adapter: mysql2
  # encodingの値をutf8mb4からutf8に変更
  encoding: utf8 
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password:
  socket: /tmp/mysql.sock
  #(以下略)

めでたしめでたし。
それにしてもカラムの型がvarchar(255)だとエラー出るとか納得いかない

参考にした記事

0
0
0

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