我已经创建了一个连接到Cloud实例的R闪亮应用程序。它在我的本地服务器上运行良好,但是当我上传到shinyapps.io或通过Dockerfile运行到云时,它无法连接。
下面是我使用RPostgres包连接的代码:
conn <- dbConnect(
drv=RPostgres::Postgres(),
dbname='postgres',
sslrootcert=path to 'server-ca.pem',
sslcert=path to 'client-cert.pem',
sslkey=path to 'client-key.pem',
host='xxxxxxxxxxxxxxxxxxx',
port=5432,
user='username',
password='password_string',
sslmode='verify-ca')我在云运行中检查了日志,我看到的错误消息如下:
警告:错误:无法为函数“dbGetQuery”找到用于签名“字符”、“字符”的继承方法
dbGetQuery()函数是在dbConnect函数之后调用的,由于它在本地服务器上运行良好,所以我非常确信所看到的是连接问题,而不是包命名空间问题。但可能是错的。
我通过添加0.0.0.0/0作为允许的网络向所有up开放。奇怪的是,偶尔我可以从shinyapps.io连接,但大多数情况下都失败了。我还没有让它在云运行中工作一次。这使我认为这可能是一个动态IP地址或类似的问题?
我是否需要通过Cloud代理来直接连接Cloud和Cloud?或者我可以通过上面的dbConnect方法连接吗?我认为0.0.0.0/0也包括云运行it,但我可能不明白它是如何工作的。如有任何解释,将不胜感激。
非常感谢!
发布于 2021-05-21 14:55:52
我通过添加0.0.0.0/0作为允许的网络向所有up开放。
从安全的角度来看,这是一个可怕的,可怕的,没有好主意。这实际上意味着整个世界都可以尝试连接到您的数据库。
正如@john在评论中所说,将云运行连接到Cloud文档详细介绍了如何连接。有两种选择:
/cloudsql/CLOUD_SQL_CONNECTION_NAME上使用Unix域套接字如果库不支持Unix域套接字,则必须使用不同的库或选择选项2并通过TCP连接。请注意,Serverless VPC访问连接器有与使用它相关的额外成本。
https://stackoverflow.com/questions/67628747
复制相似问题