rails db:migrateしたのにDBに反映されなかった時の話②
はじめに
1月〜プログラミングスクールで学習しています。
これから平日は~3/25まで毎日何かしらアウトプットのため投稿を続ける予定です。
rails db:migrateコマンドを実行した際にDBに反映されなかったことについて書きます。
今回は解決編ということで、昨日の続きです。
※Ruby2.6.5の環境を使用し学習しています。
おさらい
rails db:migrateを実行すると下記のようにエラーになりました。
焦ってエラー元のusersテーブルを作り直してしまったため、ゴミファイル(NO FILE)ができてしまい、昨日はそれを削除した手順について書きました。
% rails db:migrate
== 20220310073337 CreateDietrecords: migrating ================================
-- create_table(:dietrecords)
-> 0.0140s
== 20220310073337 CreateDietrecords: migrated (0.0141s) =======================
== 20220312031130 DeviseCreateUsers: migrating ================================
-- create_table(:users)
rails aborted!
StandardError: An error has occurred, all later migrations canceled:
現在の状況はこちらです。
下記をなんとかしないといけないようです。
down 20220312031130 Devise create users
% rails db:migrate:status
database: pfc_control_development
Status Migration ID Migration Name
--------------------------------------------------
up 20220310073337 Create dietrecords
down 20220312031130 Devise create users
解決
色々調べた結果、usersテーブルが既に存在しているため、マイグレートが実行できないみたいなので、
既に存在するusersテーブルを削除し、再度マイグレートする必要がありそうです。
まずはターミナルからコマンドラインでDBに接続します。
rails db
% rails db
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 182
Server version: 5.6.51 Homebrew
Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
次にshow tables;コマンドで現在のテーブル一覧を確認します。
show tables;
mysql> show tables;
+-----------------------------------+
| Tables_in_pfc_control_development |
+-----------------------------------+
| ar_internal_metadata |
| dietrecords |
| schema_migrations |
| users |
+-----------------------------------+
4 rows in set (0.00 sec)
今回マイグレートがうまくいかない原因となっているのはusersテーブルなのでこれを削除します。
drop table 削除対象テーブル名;
mysql> drop table users;
Query OK, 0 rows affected (0.02 sec)
mysql>
再度テーブル一覧を確認し、usersテーブルが削除できているのでexitで抜けます。
mysql> show tables;
+-----------------------------------+
| Tables_in_pfc_control_development |
+-----------------------------------+
| ar_internal_metadata |
| dietrecords |
| schema_migrations |
| users |
+-----------------------------------+
4 rows in set (0.00 sec)
mysql>
mysql> exit
この状態で再度マイグレートすると無事成功しました(泣)
rails db:migrate
% rails db:migrate
== 20220312031130 DeviseCreateUsers: migrating ================================
-- create_table(:users)
-> 0.0156s
-- add_index(:users, :email, {:unique=>true})
-> 0.0399s
-- add_index(:users, :reset_password_token, {:unique=>true})
-> 0.0180s
== 20220312031130 DeviseCreateUsers: migrated (0.0737s) =======================
エラーが出た時は焦ってごちゃごちゃやってしまうと余計に事態が悪化する典型例でしたね。。。
反省して次に生かしたいと思います
それでは~
Author And Source
この問題について(rails db:migrateしたのにDBに反映されなかった時の話②), 我々は、より多くの情報をここで見つけました https://qiita.com/namaiki_2007/items/9088c00e024e3d6a241b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .