关于postgresql:rake db:migrate – PG :: InvalidSchamaName错误:没有选择要创建的模式

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工具创建它时,它修复了问题。