1
0

More than 3 years have passed since last update.

MySQLのtoo longというエラー

Posted at
== 20210713102632 DeviseCreateUsers: migrating ================================
-- create_table(:users)
   -> 0.0447s
-- add_index(:users, :email, {:unique=>true})
rails aborted!
StandardError: An error has occurred, all later migrations canceled:

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

migrationファイルを編集し、db:migrateを実行した所 too long というMySQLのエラー・・

こちら(https://qiita.com/terufumi1122/items/9ea764618eba01144e09) を参考に、
以下のファイルを新規作成しました。
ファイル内容もコピペ

場所:config/initializer配下
ファイル名:mysql.rb

require 'active_record/connection_adapters/abstract_mysql_adapter'

module ActiveRecord
  module ConnectionAdapters
    class AbstractMysqlAdapter
      NATIVE_DATABASE_TYPES[:string] = { :name => "varchar", :limit => 191 }
    end
  end
end

⇒アプリを作る一番最初に、文字コードutf8mb4をutf8に変更しています。
 文字コードによって1文字のバイト数が異なります。
 恐らく新規作成したファイルで制限のバイト数を変更しているため、エラーが解消出来るものと思います。
 (よく分かっていない)

前回エラーが出た際は確かこの方法で解決しました。
ですが再度エラーが。

== 20210713102632 DeviseCreateUsers: migrating ================================
-- create_table(:users)
rails aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Table 'users' already exists

既にユーザーテーブルはあるよ!との事。
確かにsequel proで確認するとユーザーテーブルがカラム名なども仕様通りに作れていました。

途中でエラーが出ているのに、何でテーブル作れているんでしょう。
何だか不安になりますが、テーブルや中身は問題がなさそうなので、次に行きます。

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