データベースの修正・削除関連
【データベースの作り直し】
・データベースの名称の誤り
・エンコードなどのデータベース設定の誤り
上記のような場合はデータベースを作り直すとよい。
----------------------------------------------------------
【作り直しの方法①:データベース削除】
database.ymlに記載されているエンコード設定や
データベース名の誤りの際に行う。
データベース削除(rails db:dropコマンドを実行すると削除できる)
→database.ymlを正しい形に修正
→データベースの再作成(rails db:create)
という手順。
----------------------------------------------------------
【作り直しの方法②:データベース削除+マイグレーションファイルの適用】
データベース設定は誤っていないが、再度データベースを作り直して、
既存のマイグレーションファイルを適用させたい際に行う。
rails db:migrate:reset
このコマンドで、
データベースの削除→再度生成→既存のマイグレーションファイルを全て適用
が一括で行える。(ただし、データベースの保存内容は全て削除となる)
----------------------------------------------------------
カラムの設定ミスの修正をする際に行う。
この時、適用済みのマイグレーションファイルをそのまま修正してはいけない。
※rails db:migrate:statusでマイグレーションファイルの状態を確認できる
rails db:rollback
(最新のファイルだけDownになるので、必要な場合は複数回行う)
→マイグレーションファイル内のカラム設定の編集
→マイグレーションを実行してデータベースに適用
rails db:migrate
(ロールバックは1つずつしかできないが、rails db:migrateは全てのファイルをupにする)
----------------------------------------------------------
【作り直し④:テーブルの再作成】
→rails d modelでモデルを削除
→rails g modelでモデルを再作成
→マイグレーションファイルを編集してrails db:migrate
【マイグレーションファイルをupのまま削除してしまった場合】
テーブルを作り直すために、誤って手動でマイグレーションファイルを消したり、
upのままモデルをrails d modelで削除してしまったような場合が該当する。
rails db:migrate:statusで確認すると、
upのまま削除されたファイルがNO FILEとして残っている。
このファイルはそのままではロールバックできないので、
ファイルのMigration IDを利用して同じ名称で再度ファイルを作成する。
(コピーして手作業で作って、ファイル内にマイグレーションファイルの
デフォルト部分だけを記述する)
↓MigrationID_sample.rbという名称で作成した場合
class Sample < ActiveRecord::Migration[6.0] def change end end
この後、rails db:migrate:statusで状態を確認してロールバックを行い、
Downにしてから削除する。