我正在尝试运行rake:在我的rails应用程序的postgres数据库上进行db迁移。 rake:db drop(db已经存在我正在修复一个需要重新创建数据库的bug)运行正常rake:db create运行正常但是当我运行rake时:db migrate我得到以下错误
错误 - :PG :: InvalidSchemaName:错误:未选择任何架构来创建。
我的database.yml文件看起来很好(它正在工作,所以我不确定发生了什么?)
development:
adapter: postgressql
encoding: utf8
username: [myusername]
password: [mypassword]
host: [myhost]
port: 5432
database: myapp_dev
schema_search_path: "myapp_dev"
pool: 5
timeout: 5000
知道发生了什么事吗?
答案 0 :(得分:2)
Rails不会自动创建模式AFAIK,如果您坚持使用公共模式,那么事实可以被忽略并且事情就可以正常工作。
要使用不同的架构,您必须包含迁移才能执行此操作,像这样的原始SQL将执行此操作:
class CreateMyAppSchema < ActiveRecord::Migration
def up
execute "CREATE SCHEMA myapp_dev;"
end
def down
execute "DROP SCHEMA myapp_dev;"
end
end
除了现有架构搜索路径中的架构之外,用户还需要拥有myapp_dev架构的USAGE权限
GRANT USAGE on schema myapp_dev to the_user;
答案 1 :(得分:1)
出于某种原因,没有&#34; myapp_dev&#34;我的数据库中的架构,当我使用PGAdmin工具创建它时,它修复了问题。