Ruby on rails rakedb:structure:load与rakedb:schema:load

Ruby on rails rakedb:structure:load与rakedb:schema:load,ruby-on-rails,database,data-structures,schema,rake,Ruby On Rails,Database,Data Structures,Schema,Rake,结构只是数据库的sql版本,而模式是数据库的Rails版本吗?您希望在什么时候加载这两个文件?或者它有什么不同吗?模式文件是数据库的Rails版本,不包含任何特定于数据库的内容,如视图、触发器等 db/schema.rb无法表示特定于数据库的项,例如触发器, 序列、存储过程或检查约束等。请注意 虽然自定义SQL语句可以在迁移中运行,但是 架构转储程序无法重新构造语句。如果你是 使用这样的特性,您应该将模式格式设置为 :sql。 何时使用一个而不是另一个取决于您是否有需要的特定于db的东西。如果

结构只是数据库的
sql
版本,而模式是数据库的
Rails
版本吗?您希望在什么时候加载这两个文件?或者它有什么不同吗?

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

db/schema.rb无法表示特定于数据库的项,例如触发器, 序列、存储过程或检查约束等。请注意 虽然自定义SQL语句可以在迁移中运行,但是 架构转储程序无法重新构造语句。如果你是 使用这样的特性,您应该将模式格式设置为 :sql。

何时使用一个而不是另一个取决于您是否有需要的特定于db的东西。如果您只使用基本表,带有索引、主键和外键,那么就可以使用模式文件

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

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

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

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

db/schema.rb无法表示特定于数据库的项,例如触发器, 序列、存储过程或检查约束等。请注意 虽然自定义SQL语句可以在迁移中运行,但是 架构转储程序无法重新构造语句。如果你是 使用这样的特性,您应该将模式格式设置为 :sql。

何时使用一个而不是另一个取决于您是否有需要的特定于db的东西。如果您只使用基本表,带有索引、主键和外键,那么就可以使用模式文件

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

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

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