使用PostgreSQL运行rails db迁移的最低权限
我注册了一个网络主机计划,所以我可以发布我的rails应用程序。 他们为我提供了服务器并访问它。 这是一个共享的CentOS Linux服务器,我可以访问它的bash。
我试图将我的数据库模式加载到他们提供的postgres数据库(v8.4)中,但这样做会给我一个错误。 当我执行:
RAILS_ENV=production rake db:schema:load
生成以下错误:
-- enable_extension("plpgsql") rake aborted! ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: syntax error at or near "EXTENSION" LINE 1: CREATE EXTENSION IF NOT EXISTS "plpgsql" ^ : CREATE EXTENSION IF NOT EXISTS "plpgsql" /home/user/path-to-app/db/schema.rb:17:in `block in ' /home/user/path-to-app/db/schema.rb:14:in `' PG::SyntaxError: ERROR: syntax error at or near "EXTENSION" LINE 1: CREATE EXTENSION IF NOT EXISTS "plpgsql" ^ /home/user/path-to-app/db/schema.rb:17:in `block in ' /home/user/path-to-app/db/schema.rb:14:in `' Tasks: TOP => db:schema:load (See full trace by running task with --trace)
因为Web主机提供程序不允许许多数据库权限,并且由于我不熟悉PostgreSQL,所以我更倾向于在路边改变某些东西的解决方案……
我可以在轨道上做些什么来解决(或希望解决)这个问题吗?
如果从铁路方面无法真正做到任何事情,我必须具备必要的特权。
这个PostgreSQL EXTENSION对象似乎要求我的db用户没有的权限……
在PostgeSQL中运行db迁移的rails数据库用户的最低权限是什么?
更新
这是关于PostgreSQL 8.4,根据这里的评论,女巫没有“CREATE EXTENSION”命令。
Postgres 9.1引入了CREATE EXTENSION
,我建议你运行迁移:
RAILS_ENV=production bundle exec rake db:migrate