我在Amazon Web Services实例上设置了一个闪亮的服务器,我试图将我的app.R放到它上,但是出现此错误:
Ray ray = new Ray(Camera.main.transform.position, Camera.main.transform.forward);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, actionRange))
{
goChildren.Remove(hit.transform.gameObject);
Destroy(hit.transform.gameObject);
}
我认为这与软件包DBI的库安装有关,但是我尝试在实例上再次安装它,但未成功。 不知道下一步该怎么做。
这是错误的整个图片,我可以添加所需的任何其他信息:
我也可以确认Shiny-server安装正确,因为此页面正常加载:
这是我尝试在实例中安装软件包的方式:
Error in dbDriver("PostgreSQL") : could not find function "dbDriver"
Calls: runApp ... sourceUTF8 -> eval -> eval -> ..stacktraceon.. -> get_query
Execution halted
并且dbDriver是DBI软件包中的一个函数
这是我的app.R代码包含的内容的一部分
sudo su - -c "R -e \"install.packages(c('shiny', 'shinythemes', 'shinycssloaders', 'dplyr', 'xlsx','ggplot2','ggthemes','DT','stringr','RPostgreSQL','tidyr','dbplyr', DBI','splitstackshape'), repos='http://cran.rstudio.com/')\""
这些是同一实例上到postgreSQL数据库的表和连接信息:
如果我在dbConnect()和dbDisconnect()前面添加DBI ::,并在dbConnect函数中使用RPostgres :: Postgres()作为驱动程序,则会出现此错误:
答案 0 :(得分:1)
安装软件包并不意味着它已加载到您的名称空间中。此外,不推荐使用dbDriver
,如?dbDriver
所示:
不建议使用这些方法,有关驱动程序实例的构造,请查阅各个后端的文档。
我建议在每次对其函数的调用时显式加载DBI
或使用DBI::
(反正不是个坏主意):
library(DBI)
get_query <- function(querystring){
# create a connection
# save the password that we can "hide" it as best as we can by collapsing it
# creates a connection to the postgres database
# note that "con" will be used later in each connection to the database
con <- DBI::dbConnect(RPostgres::Postgres(), dbname = "postgres", host = "/var/run/postgresql", port = 5432, user = "postgres", password = "pw")
on.exit(DBI::dbDisconnect(con))
#rstudioapi::askForPassword("Database password")
query <- eval(parse(text = querystring))
return(query)
}
(同样,您不需要同时执行library(DBI)
和使用DBI::
,都可以选择。)
我在这里使用了RPostgres::Postgres()
,但这也适用于许多其他驱动程序,包括RPostgreSQL::PostgreSQL()
,RSQLite::SQLite()
和rodbc::odbc()
(还有其他几个驱动程序)。
进一步,尽管我不知道您在这里还要做什么:
con
对象;如果这是一两次的事情,那么您可能会保持原样; eval(parse(...))
似乎是错误的……执行用户提供的查询绝对是危险的,如果您不熟悉,请查找“ SQL Injection”。为什么不只是DBI::dbGetQuery(con, querystring)
?