【发布时间】:2015-08-26 09:07:16
【问题描述】:
我注册了一个网络主机计划,这样我就可以发布我的 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 <top (required)>'
/home/user/path-to-app/db/schema.rb:14:in `<top (required)>'
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 <top (required)>'
/home/user/path-to-app/db/schema.rb:14:in `<top (required)>'
Tasks: TOP => db:schema:load
(See full trace by running task with --trace)
因为 web-host 提供商不允许很多 db 权限,并且由于我对 PostgreSQL 不熟悉,我更喜欢在 rails 方面改变一些东西的解决方案......
我可以在 Rails 方面做些什么来解决(或希望解决)这个问题吗?
如果从 rails 方面什么都做不了,我将不得不具体说明必要的特权。
这个 PostgreSQL EXTENSION object 似乎需要我的数据库用户没有的权限...
在 PostgeSQL 中运行 db 迁移的 rails 数据库用户的最低权限是多少?
更新
这是关于 PostgreSQL 8.4 的,根据这里的 cmets 没有“CREATE EXTENSION”命令。
【问题讨论】:
-
CREATE EXTENSION是在 Postgres 9.1 中引入的 -
这是一种解脱...我应该降级 pg gem 吗?
-
这不是关于
pggem,而是关于 Postgres 数据库本身。pggem 它只是Postgres数据库的 ruby 包装器。
标签: ruby-on-rails ruby postgresql