如何在 shinyapps 中 运行 RMySQL(在本地工作正常)

How to run RMySQL in shinyapps (working fine locally)

我有一个奇怪的问题: 使用 Shiny 的 RMySQL(运行 本地)我可以毫无问题地从 MySQL 数据库(小 table,只有几行)检索数据。但是一旦部署了应用程序 (shinyapps.io),查询结果包含零行(但列名没问题)。查看 shinyapps.io 日志:

Warning in dbFetch(rs, n = n, ...) : error while fetching rows

我做错了什么?之前完全相同的东西在工作,现在我做不到 运行。 MySQL 连接似乎正常。

library(shiny)
library(DBI)

ui <- fluidPage(
    numericInput("nrows", "Enter the number of rows to display:", 5),
    tableOutput("tbl")
)

server <- function(input, output, session) {
    output$tbl <- renderTable({
        conn <- dbConnect(
            drv = RMySQL::MySQL(),
            dbname = "***",
            host = "***",
            username = "***",
            password = "***")
        on.exit(dbDisconnect(conn), add = TRUE)
        dbGetQuery(conn, paste0(
            "SELECT * FROM datasets LIMIT ", input$nrows, ";"))
    })
}

shinyApp(ui, server)

编辑: 当我使用 Shiny 虚拟数据库 (from this example) 时,它工作正常,因此 MySQL 看起来有些问题,但无法弄清楚是什么...有什么想法吗?

dbname = "shinydemo",
host = "shiny-demo.csa7qlmguqrf.us-east-1.rds.amazonaws.com",
username = "guest",
password = "guest")

编辑2 我尝试了一切。创建新的 table、新的数据库(虽然主机相同)、不同的 shinyapps 帐户、使用所有更新包的全新 R 安装,仍然是同样的问题。当应用程序在本地 运行 时,一切都很好。但是来自 shinyapps - 错误和零结果(colnames 除外)。

好的,我不知道为什么,但看起来更改 table 引擎可以解决问题

ALTER TABLE table_name ENGINE = InnoDB