迁移我的开发数据库后,我无法运行rails db:test:prepare
。
我的应用程序使用db/structure.sql
文件来更新测试数据库:
# config/application.rb
config.active_record.schema_format = :sql
当我运行
rails db:migrate
命令时(它也会运行db:structure:dump
命令),我的db/structure.sql
文件将被更新。不幸的是,它现在包含以下内容:CREATE SCHEMA public;
当加载到已经包含public
模式的数据库中时,这将失败。
我可以手动更新那行代码,然后SQL转储会成功加载:
CREATE SCHEMA IF NOT EXISTS public;
...但我不想每次都这样做。
我期望当我运行rails db:test:prepare
命令时,测试数据库可以成功地从db/structure.sql
中的SQL转储构建,因为SQL转储不应尝试创建public
模式。
structure.sql
没有尝试创建 public 架构。您使用的是哪个版本的 PostgreSQL? - mu is too shortdb/structure.sql
文件中:-- 从数据库版本11.3转储
-- 由pg_dump版本11.3转储
- ulysses_rexpg_dump
命令和--schema=<schema_name>
参数,这会创建CREATE SCHEMA <schema_name>
这一行。pg_dump
没有提供选项来将其更改为...IF EXISTS...
。 - ulysses_rexactiverecord-5.0.7.2/lib/active_record/tasks/postgresql_database_tasks.rb:45
- ulysses_rex