首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中使用sqldf -无法指定正确的用户名

问在R中使用sqldf -无法指定正确的用户名
EN

Stack Overflow用户
提问于 2013-12-31 17:31:57
回答 3查看 4.3K关注 0票数 1

我只是下载了一个名为sqldf的R包,只是为了好玩,但到目前为止还不能正确运行它。当我尝试使用iris数据集执行一些查询时:

代码语言:javascript
复制
sqldf("select * from iris limit 5")

出现错误,声明为Error in mysqlNewConnection(drv, ...) : RS-DBI driver: (Failed to connect to database: Error: Access denied for user 'myUserName'@'localhost' (using password: NO) ) Error in !dbPreExists : invalid argument type

因此,我打开了它的帮助文档,然后运行以下查询:

代码语言:javascript
复制
sqldf("select * from iris limit 5", user="myUser")

错误消息与上面的相同,这意味着在错误消息没有更改为Access denied for user 'myUser'@'localhost')的情况下,我未能正确指定我的user参数。

那么,我如何修复它并正确运行它呢?

当我使用RMySQL时,我使用以下参数来建立连接。

代码语言:javascript
复制
con <- dbConnect(dbDriver("MySQL"),username="myUser",password="myPass",host="myHost",unix.sock="/tmp/mysql.sock",dbname="myDB")

我使用的是OSX10.9.1,使用的是通过homebrew安装的MySQL 5.6,以及R版本3.0.2和sqldf版本0.4-6。

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2014-02-07 05:13:00

首先,我要确保sqldf可以与SQLLite一起工作。

代码语言:javascript
复制
head(sqldf("select * from iris",drv='SQLite'))

接下来,我强烈建议您始终使用drv=参数或显式设置sqldf.driver变量。依赖于库的顺序(..)调用可能会在以后导致错误。

如果你正在做一些简单的事情,你可以使用SQLLite,因为它速度快,依赖项少(例如,如果你移动你的代码,你不需要安装MySQL)。如果您使用的是Date,那么SQLLite不是很好,所以您可能想要使用MySQL。正如注释和?sqldf底部的注释中所提到的,您需要为mysql a Client部分设置一个my.cnf,以便包括sqldf在内的所有客户端都使用特定的登录。还要确保dbname是这样设置的:

代码语言:javascript
复制
options(sqldf.driver = "RMySQL")
options(RMySQL.dbname = "rtest")
head(sqldf("select * from iris"))

我还没有找到一种在没有my.cnf的情况下使用MySQL的可靠方法。对sqldf使用显式连接对我也不起作用。我认为PostreSQL更好,因为您可以根据文档从R内部设置用户名等。

票数 3
EN

Stack Overflow用户

发布于 2016-03-17 17:02:04

我遇到了第一个错误,因为在我的例子中,sqldf默认使用mysql。然后,我将它切换到SQLite,它使用以下命令工作。

代码语言:javascript
复制
options(sqldf.driver = "SQLite")
票数 2
EN

Stack Overflow用户

发布于 2016-08-03 15:14:19

如果您已经加载了sqldf包,请尝试同时分离RMySQL和sqldf包,然后加载package.its works for me。请看我下面的代码

代码语言:javascript
复制
detach(package:RMySQL)
detach(package:sqldf)
library(sqldf)

sqldf("select * from iris limit 5",user="sa", password = "root", host = "192.168.200.182", port=3377)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20855053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档