LoginSignup
0
0

More than 1 year has passed since last update.

Rails「Mysql2::Error: Table 'users' already exists」の解決方法

Last updated at Posted at 2023-05-03

以下を実行する

$ rails db:migrate:reset
Dropped database 'XXX_development'
Dropped database 'XXX_test'
Created database 'XXX_development'
Created database 'XXX_test'
== 20230325042627 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0067s
== 20230325042627 CreateUsers: migrated (0.0067s) =============================

参考

追記 (2023.5.6)

ご指摘を受け修正。
こちらの記事こちらの記事を参考にしました。
基本的にMySQL側でテーブルを操作するのは良くないと思っていたのですが、この場合は操作してもOKのような印象です(実際はどうかわからないです)。

以下のようにエラーが出ているとします。

$ rails db:migrate
== 20230325044645 CreateUsers: migrating ======================================
-- create_table(:users)
rails aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Table 'users' already exists
/Users/me/environment/XXX/db/migrate/20230325044645_create_users.rb:3:in `change'

Caused by:
ActiveRecord::StatementInvalid: Mysql2::Error: Table 'users' already exists
/Users/me/environment/XXX/db/migrate/20230325044645_create_users.rb:3:in `change'

Caused by:
Mysql2::Error: Table 'users' already exists
/Users/me/environment/XXX/db/migrate/20230325044645_create_users.rb:3:in `change'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

MySQL側でusersテーブルを削除します。

mysql> drop table users;
Query OK, 0 rows affected (0.17 sec)

usersテーブルが消えたことを確認します。

mysql> show tables;
+--------------------------------+
| Tables_in_agribeit_development |
+--------------------------------+
| ar_internal_metadata           |
| jobs                           |
| schema_migrations              |
+--------------------------------+
3 rows in set (0.00 sec)

再度rails db:migrateを実行します。

 $ rails db:migrate
== 20230325044645 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0637s
== 20230325044645 CreateUsers: migrated (0.0640s) =============================

usersテーブルが再度作られたことを確認します。

mysql> show tables;
+--------------------------------+
| Tables_in_agribeit_development |
+--------------------------------+
| ar_internal_metadata           |
| jobs                           |
| schema_migrations              |
| users                          |
+--------------------------------+
4 rows in set (0.01 sec)
0
0
3

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