gpt4 book ai didi

ruby-on-rails - 教 Rails 3 与 Amazon Redshift 对话 - 设置参数 "client_min_messages"的权限被拒绝

转载 作者:行者123 更新时间:2023-11-29 13:57:49 24 4
gpt4 key购买 nike

背景

我刚刚在 AWS 上启动了一个新的 Redshift 实例,我可以毫无问题地通过 psql cli 客户端连接到它。

问题

我正在尝试让我的 Rails 3 应用程序连接到 Redshift 盒子。我有 pg gem 和正确的适配器。我的 database.yml 文件包含以下详细信息:

redshift_development:  adapter: postgresql  encoding: utf8  database: db_name  port: 5439  pool: 5  schema_search_path: schema_name  username: my_uname  password: password  host: host

I manually created a table on the box called cellphones, and a model in my app app/models/cellphone.rb:

class Cellphone < ActiveRecord::Base
establish_connection 'redshift_development'
end

当我尝试在 Rails 控制台中加载应用程序并调用 Cellphone 时,我收到以下错误消息:

[1] pry(main)> Cellphone
PG::InsufficientPrivilege: ERROR: must be superuser to examine "client_min_messages"
: SHOW client_min_messages
PG::InsufficientPrivilege: ERROR: permission denied to set parameter "client_min_messages" to ""
: SET client_min_messages TO ''
=> #<Devise::Models:0x3feef95050b4>

真正奇怪的部分

我已经以 super 用户身份登录。

psql=# \c
psql (9.4.0, server 8.0.2)
SSL connection (<unimportant stuff>)
You are now connected to database "db_name" as user "my_uname".

psql=# \du
List of roles
Role name | Attributes | Member of
-----------+-------------------------------+-----------
rdsdb | Superuser, Create DB +|
| Password valid until infinity |
my_uname | Superuser, Create DB |

我该如何解决这个问题?


可选信息

出现此问题是因为 Redshift 是旧 PostgreSQL 版本的高度自定义的分支。 不允许任何用户调用show client_min_messages。 Rails 3.2.14 附带的 activerecord 版本试图在后台调用此函数(以及 Redshift 不允许的其他一些函数)。

如果发现 AWS 没有针对 Rails 应用程序的官方解决方法,我会感到非常惊讶。目前我正在使用我修改过的 activerecord Postgres 适配器版本以删除有问题的代码 - 但我真的宁愿不在生产中使用它。

最佳答案

关于ruby-on-rails - 教 Rails 3 与 Amazon Redshift 对话 - 设置参数 "client_min_messages"的权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28077213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com