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