rake db:migrate - PG :: InvalidSchamaName错误:未选择任何模式来创建

时间:2017-11-15 17:10:40

标签: postgresql ruby-on-rails-4

我正在尝试运行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

知道发生了什么事吗?

2 个答案:

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