rails structure.sql和schema.rb之间有什么区别



我知道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

最新更新