Rails has
deprecated
db:structure:load
and db:structure:dump
tasks.
Before
config.active_record.schema_format
controls the format for dumping the database schema to a file.
:ruby
(default) and :sql
are the valid options for this config.
Running rails db:schema:{dump,load}
will dump or load db/schema.rb file
and
rails db:structure:{dump,load}
will dump or load db/structure.sql file,
regardless of value specified for config.active_record.schema_format
.
After
Both the commands,
rails db:schema:{dump,load}
and
rails db:structure:{dump,load}
will run
rails db:schema:{dump,load}
depending on the value specified for config.active_record.schema_format
.
So running, rails db:schema:dump
or rails db:structure:dump
will dump db/schema.rb
file.
If we specify :sql
as the value for config.active_record.schema_format
,
running rails db:schema:dump
or rails db:structure:dump
will dump db/stucture.sql
file.
Running rails db:structure:{dump,load}
will result in a deprecation warning,
as these commands will be removed in Rails 6.2:
DEPRECATION WARNING: Using `bin/rails db:structure:load` is deprecated and will be removed in Rails 6.2.
Configure the format using `config.active_record.schema_format = :sql` to use `structure.sql`
and
run `bin/rails db:schema:load` instead
Note: config.active_support.deprecation = :stderr
has to be set for above deprecation message to show up.