r - R Oracle DB 连接因 dbPool 失败,但因 dbConnect 成功
问题描述
我正在尝试使用 pool 包的dbPool函数重构旧代码以使用数据库池。
从历史上看,我一直在使用 DBI 包的dbConnect函数,没有问题。我可以使用以下代码成功创建到我的 Oracle 数据库的连接(所有凭据都是伪造的):
conn <- DBI::dbConnect(
ROracle::Oracle(),
"database.abcd1234.us-east-1.rds.amazonaws.com/orcl",
username="username",
password="hunter2"
)
但是,当我在同一开发环境中使用相同的凭据尝试创建这样的池时:
pool <- pool::dbPool(
drv = ROracle::Oracle(),
dbname = "orcl",
host = "database.abcd1234.us-east-1.rds.amazonaws.com",
username = "username",
password = "hunter2"
)
我收到一个错误:
Error in .oci.Connect(.oci.drv(), username = username, password = password, :
ORA-12162: TNS:net service name is incorrectly specified
我之前使用过 dbPool,但使用的是 Postgres 数据库而不是 Oracle,而对于 Postgres,它可以正常工作!我在想,因为我的凭据适用于 dbConnect,所以我必须缺少一些小东西,这也是 dbPool 正常工作所必需的
解决方案
orcl
是service name
,不是database name
。
尝试:
pool <- pool::dbPool(
drv = ROracle::Oracle(),
host = "database.abcd1234.us-east-1.rds.amazonaws.com/orcl",
username = "username",
password = "hunter2"
)
或者
pool <- pool::dbPool(
drv = ROracle::Oracle(),
sid = "orcl",
host = "database.abcd1234.us-east-1.rds.amazonaws.com",
username = "username",
password = "hunter2"
)
推荐阅读
- ms-access - 用于更高版本 MS Access 的 Microsoft CommonDialog 控件
- paypal - Paypal 定期付款未收取费用
- jquery - 从另一个网页 jquery 显示模态
- angular - 如何包装primeng复选框标签的文本?
- python - 为什么在迭代 NumPy 数组时 Cython 比 Numba 慢得多?
- c# - 如何将 newPositions 距离设置为更接近原始小队成员位置?
- algorithm - 所有经过 2 点的路线的建议
- java - 在java中,我读到在实例化一个类时,它总是在堆上创建。这是否意味着实例化的对象是一个引用?
- powershell - 使用 Invoke-Command 但出现错误“一个或多个计算机名称无效”
- python - 如何解决以下问题:'ValueError:无法分配“2”:“Actie.actie_gebruiker_id”必须是“Gebruiker”实例。'?