rails db: Commandおさらい
11051 ワード
よく使う(見る、覚えておいた方が良い)Migrateをおさらいしておく
個人的な偏見です。
ただただ、雰囲気でやってたので、そろそろ認識を改めようかと...。
全部確認したい場合にはこちらが見易かったです。
オプションも色々とあるので、リンク先の方が良いかなと。
rails db:HOGEHOGE 関連
rails db:drop
いきなりかーいという感じですが、とりあえず手元を綺麗にしたかったので...。
すでに存在している database を 削除 します
% rails db:drop
Dropped database 'rails_association_development'
Dropped database 'rails_association_test'
%
- 実行前
mysql> show databases;
+-------------------------------+
| Database |
+-------------------------------+
| information_schema |
| mysql |
| performance_schema |
| rails_association_development |
| rails_association_test |
| sys |
+-------------------------------+
6 rows in set (0.01 sec)
- 実行後
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
rails db:create
普通はこれが最初ですよね。
% rails db:create
Created database 'rails_association_development'
Created database 'rails_association_test'
%
- 実行前
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
- 実行後
mysql> show databases;
+-------------------------------+
| Database |
+-------------------------------+
| information_schema |
| mysql |
| performance_schema |
| rails_association_development |
| rails_association_test |
| sys |
+-------------------------------+
6 rows in set (0.01 sec)
rails db:reset と rails db:migrate:reset
上記二つを組み合わせたもの。との認識合わせて migrate も実行したい場合には
rails db:migrate:reset (resetしてから、migrateの順番)となる。
% rails db:migrate:reset
Dropped database 'rails_association_development'
Dropped database 'rails_association_test'
Created database 'rails_association_development'
Created database 'rails_association_test'
== 20220227085625 CreateUsers: migrating ======================================
-- create_table(:users)
-> 0.0188s
== 20220227085625 CreateUsers: migrated (0.0189s) =============================
%
rails db:migrate:status
現在どこまでの migrate が完了しているかを確認する
up: 適応済み
down: 未適応
% rails db:migrate:status
database: rails_association_development
Status Migration ID Migration Name
--------------------------------------------------
up 20220227085625 Create users
down 20220321094237 Create posts
down 20220412122316 Create groups
down 20220412135254 Create group members
%
rails db:migrate [VERSION]
指定の migrate のみを実行したい
% rails db:migrate:status
database: rails_association_development
Status Migration ID Migration Name
--------------------------------------------------
up 20220227085625 Create users
down 20220321094237 Create posts
down 20220412122316 Create groups
down 20220412135254 Create group members
% rails db:migrate VERSION=20220321094237
== 20220321094237 CreatePosts: migrating ======================================
-- create_table(:posts)
-> 0.0232s
-- add_index(:posts, [:user_id, :created_at])
-> 0.0232s
== 20220321094237 CreatePosts: migrated (0.0466s) =============================
% rails db:migrate:status
database: rails_association_development
Status Migration ID Migration Name
--------------------------------------------------
up 20220227085625 Create users
up 20220321094237 Create posts
down 20220412122316 Create groups
down 20220412135254 Create group members
%
備考
-
ActiveRecord::NoEnvironmentInSchemaError
が出た時 -
uninitialized constant MIGRATE_FILE_NAME
が出た時- 定義ファイルがおかしいので見直しましょう。
- 自分は一個づつ migrate の実行結果を MySQL Console で確認しつつやりたいなーと、思って一旦全部コメントアウトしたら出ました。
- migrate file name に則ったファイルがあると怒られます...。
- (komment.rbという名前にしたら出なくなった)
# class CreatePosts < ActiveRecord::Migration[7.0] # def change # create_table :posts do |t| # t.text :content # t.references :user, null: false, foreign_key: true # # t.timestamps # end # add_index :posts, [:user_id, :created_at] # end # end
Author And Source
この問題について(rails db: Commandおさらい), 我々は、より多くの情報をここで見つけました https://zenn.dev/strsbn/articles/79d921f4f87f64著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol