如何使用rake db:dump:schema导出多个PostgreSQL模式

6
我们的postgres数据库有两个模式:公共模式和元数据模式。我需要在我的测试数据库中使用这两个模式,但是rake db:schema:dump只转储了公共模式。如果我在database.yml文件中添加schema_search_path: "public, metadata",它会转储这两个模式,但是架构信息不会出现。
如何将这两个模式都转储到db/schema.rb中,以便可以使用rake db:test:prepare加载它们?

1
阅读代码,我认为除非你以本地格式转储,否则不可能实现。例如,我看到您可以添加table_name_prefix,但这是全局的,并将添加到所有表中。例如,您可以尝试“ActiveRecord::Base.table_name_prefix='public.'”,这可能有效。 - Rob
1个回答

2
我认为答案是使用结构文件而不是模式文件。
请将以下内容添加到application.rb中。
# use a .sql structure instead of a schema.rb for the schema
config.active_record.schema_format = :sql

删除你的schema.rb文件

现在会使用结构(SQL)而不是模式(rb)来转储你的数据库,这样可以更加表达。但是,现在它与你的数据库供应商绑定(对我们来说不是很重要)。

bundle exec rake db:test:prepare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接