Ruby on Railsのmigrationで実行されるSQLコマンドを確認する

1 min

記事内に広告を含む場合があります

Railsで開発してるとしょっちゅう実行するやつですね。

コマンドだとこう

$ rails db:migrate RAILS_ENV=development

まぁ環境変数はお好みですかね。

これでmigrateが実行されるわけですが、ではコマンドだとどうなるのか?

答えはdevelopment.logの中にある

log/development.log というとこに記録が残ってます。

例を載せるとこんな感じ。

Migrating to CreateUser (20220122084931)
   (10.9ms)  CREATE TABLE `users` (`id` bigint NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` varchar(255), `email` varchar(255) NOT NULL, `created_at` datetime(6) NOT NULL, `updated_at` datetime(6) NOT NULL)
   (0.3ms)  BEGIN
  primary::SchemaMigration Create (2.6ms)  INSERT INTO `schema_migrations` (`version`) VALUES ('20220122084931')
   (1.1ms)  COMMIT

何してるかと言うと、Migrating to 〜〜で始まって、まず実行したいmigrate内容のSQLを実行。最初だとCREATEやらALTERが多いかな。

その後にschema_migrationsテーブルに実行履歴としてファイル名の先頭にある日時の数字を保存してる。

なのでこの2つのクエリをMySQLで実行してあげればそのままmigrateしたのと同じになる。

関連記事