这个过程可以从MySQL命令行远程和本地主机上运行,并且在从PHP调用时可以正常工作.在所有情况下,补助金都是足够的:
CREATE PROCEDURE `myDB`.`lee_expout` (IN e int, IN g int)
BEGIN
select lm.groupname, lee.location, starttime, dark,
inadist,smldist,lardist,emptydur,inadur,smldur,lardur,emptyct,entct,inact,smlct,larct
from lee join leegroup_map lm using (location)
where exp_id= e and std_interval!=0 and groupset_id= g
order by starttime,groupname,location;
END
Run Code Online (Sandbox Code Playgroud)
我试图从R调用它:
library(DBI)
library(RMySQL)
db <- dbConnect(MySQL(), user="user", password="pswd",
dbname="myDB", host="the.host.com")
#args to pass to the procedure
exp_id<-16
group_id<-2
#the procedure call
p <- paste('CALL lee_expout(', exp_id, ',', group_id,')', sep= ' ')
#the bare query
q <- paste('select lm.groupname, lee.location, starttime, dark,
inadist,smldist,lardist,emptydur,inadur,smldur,lardur,emptyct,entct,inact,smlct,larct
from lee …Run Code Online (Sandbox Code Playgroud) 我有一个项目,其连接在同一设备上正常工作.我突然得到了下面的错误.我可以通过MySQL工作台从同一台设备连接.
可能是什么原因?
library(RMySQL)
con <- dbConnect(RMySQL::MySQL(),
host = "xxx",
dbname="yyy",
user = "zzz",
password = "############")
Error in .local(drv, ...) :
Failed to connect to database: Error: Lost connection to MySQL server at 'reading authorization packet', system error: 10060
Run Code Online (Sandbox Code Playgroud)
这是会话信息
> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods …Run Code Online (Sandbox Code Playgroud) 我是R的新手,我正在尝试将R连接到MySQL.我已经安装mysql-5.5.22-winx64和R-2.12.064位.我已经设置MYSQL_HOME environment path(C:\Program Files\MySQL\MySQL Server 5.5)并尝试按照以下步骤操作:
C:\Program Files\R\R-2.12.1\etc\Renviron.site并添加行MYSQL_HOME=C:/mysql(如mysql文件的路径) libmysql.lib从mysql/lib以mysql/lib/opt满足依赖性. libmysql.dll到C:\Program Files\R\R-2.12.1\bin或到windows/system32 directory. 运行install.packages('RMySQL',type='source')并等待编译结束.但我仍然得到这个错误: -
*> install.packages('RMySQL',type='source')
--- Please select a CRAN mirror for use in this session ---
trying URL 'http://ftp.iitm.ac.in/cran/src/contrib/RMySQL_0.9-3.tar.gz'
Content type 'application/x-gzip' length 165363 bytes (161 Kb)
opened URL
downloaded 161 Kb
* installing *source* package 'RMySQL' ...
ERROR: configuration failed for …Run Code Online (Sandbox Code Playgroud)我正在使用rapache和brew开发一个Web应用程序.在R代码中,我想使用RMySQL包来查询MySQL数据库,但我在质疑从R脚本中访问数据库登录详细信息的最佳方法.
根据PHP的类似问题的一些建议,一个想法是在交互式会话中执行以下操作以将连接详细信息保存到以下文件之外/var/www:
con <- dbConnect(MySQL(), dbname = "mydb", user = "myuser", pass = "mypass")
save(con, file = "/home/myuser/sqlconnect.rda")
Run Code Online (Sandbox Code Playgroud)
然后在由rapache/brew运行的脚本中,加载.rda文件:
<%
load("/home/myuser/sqlconnect.rda")
query <- "MY QUERY"
result <- dbGetQuery(con, query)
%>
Run Code Online (Sandbox Code Playgroud)
我还没有尝试过这种方法.我甚至不确定我的sqlconnect.rda文件是否包含连接所需的所有信息.
是否有更安全的方式来设置dbConnect()声明?
将dbConnect()输出保存到文件不起作用,因为连接已超时.但是,从我的用户目录中包含source一个.R文件
library(RMySQL)
con <- dbConnect(MySQL(), dbname = "mydb", user = "myuser", pass = "mypass")
Run Code Online (Sandbox Code Playgroud)
确实有效.
但是,我不知道这种方法有多安全.
我试图从RMySQL连接到VM上的MySQL服务器,这是我执行的命令
c<-dbConnect(MySQL(), user="root", password="passw0rd", dbname="leopard", host="one-1368")
Run Code Online (Sandbox Code Playgroud)
它显示以下错误
RS-DBI driver: (Failed to connect to database: Error: Connection using old
(pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)
Run Code Online (Sandbox Code Playgroud)
我在我的系统上使用MySQL客户端5.6,VM显示它运行5.5.我认为这可能是服务器版本的一个问题.
任何帮助,将不胜感激.谢谢
我正在尝试使用RMySQL,并且意外地创建了一个没有句柄的连接.
dbConnect(MySQL(), user = "foo", password = "bar")
connLocalDB = dbConnect(MySQL(), user = "foo", password = "bar")
Run Code Online (Sandbox Code Playgroud)
请注意,第一次调用的返回不会分配给任何内容.现在,当我做一个时,dbListConnections(MySQL())我看到两个连接:
> dbListConnections(MySQL())
[[1]]
<MySQLConnection:0,0>
[[2]]
<MySQLConnection:0,1>
Run Code Online (Sandbox Code Playgroud)
然后我尝试了这个:
> dbDisconnect(dbListConnections(MySQL())[[1]])
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
但是,我得到了这个:
> dbListConnections(MySQL())
[[1]]
Error in .local(dbObj, ...) :
internal error in RS_DBI_getConnection: corrupt connection handle
Run Code Online (Sandbox Code Playgroud)
如何安全地终止未分配句柄的连接?
我使用RMySQL和DBI来连接R和MySQL
library(RMySQL)
library(DBI, quietly = TRUE)
Run Code Online (Sandbox Code Playgroud)
对于一个命令,一切都工作正常,例如
sql = "select * from clients"
con <- dbConnect(MySQL(),user=user, password=password, dbname=dbname, host=host)
rs <- dbSendQuery(con, sql)
data <- fetch(rs, n=-1)
huh <- dbHasCompleted(rs)
dbClearResult(rs)
on.exit(dbDisconnect(con))
Run Code Online (Sandbox Code Playgroud)
但是,当我想用";"执行多个命令时 它们之间(例如设置参数),它返回错误.例如
sql = "SET @LAST_TEN_DAY = DATE_ADD(NOW(), INTERVAL -10 DAY); select * from clients where date > @LAST_TEN_DAY"
con <- dbConnect(MySQL(),user=user, password=password, dbname=dbname, host=host)
rs <- dbSendQuery(con, sql)
data <- fetch(rs, n=-1)
huh <- dbHasCompleted(rs)
dbClearResult(rs)
on.exit(dbDisconnect(con))
Run Code Online (Sandbox Code Playgroud)
非常感谢,
在我的 Linux 机器上安装 RMySQL 花费了大量时间,但我能够在更改环境变量并复制并粘贴 lib.dll 文件后安装它。
但是,我现在正在尝试在我的 64 位窗口机器上安装 RMySQL,但到目前为止两天还没有任何进展。它在“运行命令sh ./configure.win出现状态 127 错误后崩溃了,我找不到这意味着什么。
任何人都可以对此有所了解吗?
install.packages('RMySQL',type='source')
Installing package into ‘C:/Users/chu/Documents/R/win-library/3.1’
(as ‘lib’ is unspecified)
trying URL 'http://cran.rstudio.com/src/contrib/RMySQL_0.9-3.tar.gz'
Content type 'application/x-gzip' length 165363 bytes (161 Kb)
opened URL
downloaded 161 Kb
* installing *source* package 'RMySQL' ...
** package 'RMySQL' successfully unpacked and MD5 sums checked
Warning: running command 'sh ./configure.win' had status 127
ERROR: configuration failed for package 'RMySQL'
* removing 'C:/Users/chu/Documents/R/win-library/3.1/RMySQL'
Warning in install.packages :
running command …Run Code Online (Sandbox Code Playgroud) 我用R 的闪亮包创建了一个在线实验.假设我有3个被称为"折腾","决定" 和" 评级"的反应值.
此外,我在亚马逊网络服务RDS上推出了一个MySQL数据库.版本是MySQL 5.6.22.
我成功地设法将非反应值(如时间戳)发送到MySQL数据库.所以我假设问题是在Server.R代码中找到与MySQL对话的代码.对于非反应值,当代码在响应服务器功能之外(之前)时,它可以很好地工作.但是对于反应值,我认为它应该在某个地方.
我试过这段代码:
Server.R
library(shiny)
library(RMySQL)
library(DBI)
con <- dbConnect(MySQL(), dbname="db", username="myname", password="mypassword", host="myhost.com", port=xxxx)
function(input, output, session){
sql <- reactive({
paste("insert into scenario1 (toss, dec, rat, timestamp)
values (",input$toss,",",input$decision,",",input$rating,"now())")
})
result<-reactive({dbSendQuery(con, sql())})
}
Run Code Online (Sandbox Code Playgroud)
这样,我没有收到错误消息.所以错误可能在insert into-code中.
另外,我不确定我使用的包装是否适用于此目的.我尝试了很多东西.每当我通过将其保留在SQL-quote之外来添加一个无效值时它就会停止工作.我开始认为RMySQL缺少这个功能.insert into手册中没有任何内容.
有人能够发现我犯的错误吗?
我想使用 RMySQL 包来查询数据库。我通常在使用R 脚本之前ssh website.com在我的 mac 终端中输入。dbConnect()dbGetQuery()
我的数据库位于防火墙后面,只能在本地访问,据我所知,需要通过 ssh 进入。
整个过程可以用R来完成吗?
我尝试过system('ssh website.com'))但没有成功
谢谢