我知道schema.rb文件是一个ruby文件,它在运行rake迁移时被创建和修改,但是struct.sql呢.
我在一些项目schema.rb和其他的struct.sql和一些两个文件中看到过,它们在哪里配置要创建的文件.
这两者究竟有什么区别.
生成的structure.sql是否特定于特定DB.
主要区别在于它schema.rb
是数据库的Ruby表示,并且通常与数据库无关.structure.sql
而是数据库的SQL表示,它取决于您选择的特定数据库.
如果您具有所需的特定数据库功能并且无法表示,则仅使用该结构schema.rb
.例如,在过去,为了在数据库级别使用PostgreSQL JSONB字段或外键约束,替换schema.rb
了一些人structure.sql
.
迁移现在支持这两个功能,因此您无需再切换到structure.sql
这些功能(在这些情况下).
一般来说,我建议你使用schema.rb
.