我有一个Rails 3.2.1项目,我正在尝试运行我的规范。
当我跑步时: 耙
耙子流产了! PG ::错误:错误:参数值无效 “search_path”:“example”DETAIL:架构“示例”不存在: SET search_path TO example
从我可以解决的问题来看,rake db:test:prepare删除了测试数据库,然后尝试从schema.rb重新创建它。问题是,database.yml有一行
schema_search_path:example
所以当它尝试重新连接时,它会因上述错误而失败。
我认为我的问题是,如何获得rake db:test:准备设置schema_path呢?
答案 0 :(得分:0)
一种解决方案是向db:create任务添加一些代码,以创建架构。把它放在一个rake任务中,例如'APP_ROOT / lib / tasks / db_create_schema.rake'
namespace :db do
task :create do
config = Rails.configuration.database_configuration[Rails.env].merge!({'schema_search_path' => 'public'})
ActiveRecord::Base.establish_connection(config)
ActiveRecord::Base.connection.execute("CREATE SCHEMA schema_name")
end
end
答案 1 :(得分:-1)
您应该在config / database.yml
中设置schema_search_path
e.g。
development:
adapter: postgresql
encoding: unicode
database: test
pool: 5
username: user
password: password
#host: localhost
#port: 5432
# Schema search path. The server defaults to $user,public
schema_search_path: example