rake db:migrate - PG:: InvalidSchamaName ERROR: no schema has been selected to create in
我正在尝试运行rake:在我的rails应用程序的postgres数据库上进行db迁移。 rake:db drop(db已经存在我正在修复一个需要重新创建数据库的bug)运行正常rake:db create运行正常但是当我运行rake时:db migrate我得到以下错误
错误 - :PG :: InvalidSchemaName:错误:未选择任何架构来创建。
我的database.yml文件看起来很好(它正在工作,所以我不确定发生了什么?)
1 2 3 4 5 6 7 8 9 10 11 | 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 |
知道发生了什么事吗?
Rails不会自动创建模式AFAIK,如果您坚持使用公共模式,那么事实可以被忽略并且事情正常。
要使用不同的模式,您必须包含迁移才能执行此操作,像这样的原始SQL将执行以下操作:
1 2 3 4 5 6 7 8 9 | class CreateMyAppSchema < ActiveRecord::Migration def up EXECUTE"CREATE SCHEMA myapp_dev;" END def down EXECUTE"DROP SCHEMA myapp_dev;" END END |
除了现有模式搜索路径中的模式之外,用户还需要具有myapp_dev模式的USAGE特权。
1 | GRANT USAGE ON schema myapp_dev TO the_user; |
出于某种原因,我的数据库中没有"myapp_dev"架构,当我使用PGAdmin工具创建它时,它修复了问题。