在 Rails 中连接外部 redshift 数据库时出错
Posted
技术标签:
【中文标题】在 Rails 中连接外部 redshift 数据库时出错【英文标题】:Getting error when connecting with external redshift database in rails 【发布时间】:2019-03-12 09:42:32 【问题描述】:收到此错误:
PG::InsufficientPrivilege: 错误: 设置参数的权限被拒绝 “client_min_messages”到“警告”:SET client_min_messages TO 连接 redshift 数据库时出现“警告”。
enter image description here
我的 database.yml 文件设置如下所示
development:
adapter: postgresql
encoding: utf8
host: nacfhrcluster123.ctvpledrvuobs5.us-east-1.redshift.amazonaws.com
port: 5439
username: nacfhr123
password: NACFDChr12345!
database: devnacfhrdc
pool: 5
schema_search_path: 'beta'
timeout: 5000
min_messages: warning
【问题讨论】:
检查您的 PG 用户的权限。 您可能想要编辑您的问题以删除您的密码 - 除非它是一个虚拟的但看起来不像 @JonScott 我想这有点太晚了,所以 OP 可能需要更改他们的密码。 是的,同意,您应该期望用户/密码即使在被删除后也能广泛使用。希望它只是一个假人。 【参考方案1】:谢谢大家的回复。我通过在我的 gemfile 中添加一个名为“activerecord5-redshift-adapter”的 gem 解决了这个问题。因此,您必须在 gem 文件中添加以下行。
gem 'activerecord5-redshift-adapter'
然后再次运行 bundle install。
【讨论】:
【参考方案2】:重要的是要意识到 Redshift 不是 Postgres。有很多不同。
一个区别是可用的参数有很大不同,Redshift上唯一可以设置的参数有:
analyze_threshold_percent
datestyle
extra_float_digits
query_group
search_path
statement_timeout
wlm_query_slot_count
您将需要更改您的 rails 连接,以便不要求设置此参数。
我猜这意味着删除min_messages: warning
【讨论】:
也尝试删除 min_messages 参数,但它不起作用【参考方案3】:我希望这会有所帮助。据我所知,Redshift
没有可用的活动记录,而且Redshift
不是典型的RDBMS
也没有任何意义。
我们有类似的场景,我们将 ROR 用作分析和规划应用程序之一的前端。
这是我们的应用场景:
前端:ROR 数据库:mysql(OLTP) 数据仓库:Redshift(OLAP)
这就是数据在 ROR 和 Redshift 之间来回流动的方式。
从 ROR 插入/更新到 Redshift(很少发生)。 对于来自 ROR 的任何对数据仓库产生影响的操作,ROR 会执行带有特定查询的PSQL
命令,而不是通过活动记录。
从 Redshift 中选择(经常发生)
同样,为了通过选择查询从 DW 获取数据并使用PSQL
命令重定向到文件,然后使用myssqlimport
将其导入OLTP
。
我们使用的psql、mysqlimport 工具的链接。 如果您有其他具体的后续问题,请发表评论。
【讨论】:
以上是关于在 Rails 中连接外部 redshift 数据库时出错的主要内容,如果未能解决你的问题,请参考以下文章
在 REDSHIFT 中的 ALTER 语句中连接字符串(语法错误)