Rails rake db:structure:load vs. rake db:schema:load

时间:2017-06-05 21:40:24

标签: ruby-on-rails database data-structures schema rake

结构只是数据库的sql版本,而模式是数据库的Rails版本吗?你想什么时候加载?或者它有所作为?

1 个答案:

答案 0 :(得分:3)

模式文件是数据库的Rails版本,并不包含任何特定于数据库的内容,如视图,触发器等。

  

db / schema.rb无法表达特定于数据库的项目,例如触发器,   序列,存储过程或检查约束等。请注意   虽然自定义SQL语句可以在迁移中运行,但这些   语句转储器无法重构语句。如果你是   使用这样的功能,您应该将架构格式设置为   :SQL。   http://edgeguides.rubyonrails.org/active_record_migrations.html#schema-dumping-and-you

您何时使用其中一个取决于您是否具有所需的数据库特定内容。如果您使用的只是基本表,使用索引以及主键和外键,您最好使用模式文件。

在我看来,我总是使用structure.rb,因为我总是使用一些特定于数据库的东西。

您可以在config/application.rb文件中更改此格式,以更改要使用的格式。

config.active_record.schema_format = :sql # default is :ruby