schema.rb と structure.sql を使用したスキーマ情報管理について。
スキーマ情報について
テーブルを変更した時にrake db:migrate
を実行するとconfig/schema.rb
に Ruby 形式でスキーマ情報が保存されます。SQL でスキーマ情報を保存したい場合はconfig/application.rb
(environment
などでもOK)に以下の設定を追加してください。指定できるのは:ruby
か:sql
でデフォルトは:ruby
です。
config.active_record.schema_format = :sql
この状態でrake db:migrate
を実行するとconfig/structure.sql
に保存されます。
設定ファイル(config) - - Railsドキュメント
スキーマ情報の生成
上記の設定がなくても以下のコマンドを使うと、その時点のデータベースの状態で全てのスキーマファイルが作成されます。例えば通常はschema.rb
に保存するようにしていてもstructure.sql
を生成することは可能です。
# schema.rbを作成 rake db:schema:dump # structure.sqlを作成 rake db:structure:dump
データベースを作成
以下のコマンドでスキーマファイルを読み込み、データベースを再作成することができます。ただし既存のデータが削除されてしまうので注意して下さい。
# schema.rbを読み込み rake db:schema:load # structure.sqlを読み込み rake db:structure:load