从 shinyapps.io 连接到 MySQL
Connect to MySQL from shinyapps.io
我有一个正在运行的 Shiny 应用程序,它通过 pool
查询远程 MySQL 数据库,我可以在本地计算机上 运行。
MySQL 服务器有 whitelisted shinyapps.io IP addresses.
当我将其部署到 shinyapps.io 时,出现此错误:
.全球
library(shiny)
library(DBI)
library(pool)
library(DT)
pool <- dbPool(
drv = RMySQL::MySQL(),
dbname = "gw_observatory",
host = "sage.metro.ucdavis.edu",
username = "gw_observatory",
password = "password"
)
onStop(function() {
poolClose(pool)
})
.服务器
shinyServer(function(input, output, session) {
output$data_table <- renderDataTable({
DT::datatable(pool %>% tbl("small_data") %>% collect())
})
.ui
shinyUI(
fluidPage(
mainPanel(DT::dataTableOutput("data_table"))
)
)
更新: 现在可以使用了。我的系统管理员添加了一个端口,并解决了这个问题。
对于运行这个问题的任何人,我推荐以下步骤:
- 确保您的 shinyapp 在本地运行
如果您在 shinyapps.io 上遇到部署错误,请确保:
- 您的数据库已将 shinyappsio IP 地址列入白名单
- 您的主机是外部主机,public IP 或 URL 而不是内部主机
- 一些机构有非常严密的防火墙。尝试向您的数据库添加一个端口。
我希望这对在线的人有所帮助!
pool <- dbPool(
drv = RMySQL::MySQL(),
dbname = "some_name",
host = "123.45.678.901",
username = "some_username",
password = "password",
port = 1234567
)
我有一个正在运行的 Shiny 应用程序,它通过 pool
查询远程 MySQL 数据库,我可以在本地计算机上 运行。
MySQL 服务器有 whitelisted shinyapps.io IP addresses.
当我将其部署到 shinyapps.io 时,出现此错误:
.全球
library(shiny)
library(DBI)
library(pool)
library(DT)
pool <- dbPool(
drv = RMySQL::MySQL(),
dbname = "gw_observatory",
host = "sage.metro.ucdavis.edu",
username = "gw_observatory",
password = "password"
)
onStop(function() {
poolClose(pool)
})
.服务器
shinyServer(function(input, output, session) {
output$data_table <- renderDataTable({
DT::datatable(pool %>% tbl("small_data") %>% collect())
})
.ui
shinyUI(
fluidPage(
mainPanel(DT::dataTableOutput("data_table"))
)
)
更新: 现在可以使用了。我的系统管理员添加了一个端口,并解决了这个问题。
对于运行这个问题的任何人,我推荐以下步骤:
- 确保您的 shinyapp 在本地运行
如果您在 shinyapps.io 上遇到部署错误,请确保:
- 您的数据库已将 shinyappsio IP 地址列入白名单
- 您的主机是外部主机,public IP 或 URL 而不是内部主机
- 一些机构有非常严密的防火墙。尝试向您的数据库添加一个端口。
我希望这对在线的人有所帮助!
pool <- dbPool(
drv = RMySQL::MySQL(),
dbname = "some_name",
host = "123.45.678.901",
username = "some_username",
password = "password",
port = 1234567
)