我是R的新手,我正在尝试将R与MySQL连接。我为64位安装了mysql-5.5.22-winx64
和R-2.12.0
。我已设置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 package 'RMySQL'
* removing 'C:/PROGRA~1/R/R-212~1.0/library/RMySQL'
* restoring previous 'C:/PROGRA~1/R/R-212~1.0/library/RMySQL'
The downloaded packages are in
‘C:\Users\sharad\AppData\Local\Temp\RtmpdQHwCb\downloaded_packages’
Warning message:
In install.packages("RMySQL", type = "source") :
installation of package 'RMySQL' had non-zero exit status*
请建议我如何解决这个问题?
最后我得到了解决方案: - 您可以在我的blog上详细查看解决方案。
我在使用RMySQL包安装R的最后2天工作,最后得到了解决方案,以下是安装RMySQL包的步骤: -
从以下链接下载软件:
* a. R2.13.2: Download R from http://cran.stat.sfu.ca/index.html
b. RTools 214: Download RTools from http://cran.cict.fr
c. RMySQL 0.8-0.tar.gz: Download RMySQL from
http://biostat.mc.vanderbilt.edu/wiki/main/RMySQL/RMySQL_0.8-0.tar.gz
d. MySQL Server 5.0: download it from http://dev.mysql.com
e. RSTUDIO (optional): download it from http://rstudio.org*
设定以下环境变量
* a. MYSQL_HOME : <drive>/path to MySQL installation folder
e.g. MYSQL_HOME= C:\Program Files\MySQL\MySQL Server 5.5\
b. R_HOME: <drive>/path to R installation
e.g. R_HOME=C:\Program Files\R\R-2.13.2\
c. PATH: Modify path to accommodate the above variables. *
确保Windows PATH变量中包含以下路径: \ Rtools \ 2.14 \仓 \ Rtools \ 2.14 \ MinGW的\ BIN \ Rtools \ 2.14 \ MinGW64 \ BIN
创建文件夹和复制文件
* a. OPT: Create a folder OPT under
C:\Program Files\MySQL\MySQL Server 5.5\lib and
copy MYSQLLIB.LIB the above path.
Also copy libmysql.dll to
<drive>\<path>\R\R-2.14.0\bin\(64 bit) Or
<Drive>\<path>\R\R-2.14.0\bin\i386\ (32 bit) and
to C:\Windows\System32.
b. Renviron.site: create or edit a file
<DRIVE>\<path>\R\R-2.14.0\etc\Renviron.site and
add a line:
MYSQL_HOME =”C:/Program Files/MySQL/MySQL Server 5.5/”
NB: USE FORWARD SLASH AND DOUBLE QUOTES HERE
c. libMySQL.dll: Copy this file to
C:\Program Files\R\R-2.13.2\bin\i386 as well as
C:\Program Files\R\R-2.13.2\bin*
RUN COMMANDS
一个。 Install.Packages:通过单击桌面上的R图标或从“开始”菜单运行R GUI。类型 INSTALL.PACKAGES(“RMySQL”,类型=”源”)。 这将从存储库下载所需的软件。
湾命令提示符:复制下载的zip文件(在步骤4.a.中)并将其粘贴到R安装文件夹下。 转到“开始”菜单并打开“命令提示符”。转到R安装文件夹,然后键入R CMD INSTALL RMySQL_0.8-0.tar.gz
*命令:
库(RMySQL) drv = dbDriver(&#34; MySQL&#34;) con = dbConnect(drv,host =&#34; localhost&#34;,dbname =&#34; test&#34;,user =&#34; root&#34;,pass =&#34; root&#34;) album = dbGetQuery(con,statement =&#34; select * from t_master&#34;) 专辑*
答案 0 :(得分:11)
您现在可以跳过所有复杂的步骤,只需执行install.packages("RMySQL")
答案 1 :(得分:4)
周末我在Mac OSX上遇到黑客马拉松时遇到了这个问题 - 尽管有一些参考资料(最后提到),但我花了4个小时将所有东西拼凑在一起。我没有找到一个简单的演练,所以我决定发布一个,但它在我心中是新的。
我不确定与Windows的兼容性,但希望这些说明也会让您更轻松。
我试图让R和MySQL在本地环境中进行通信(可能需要对服务器环境进行更改)。我使用XAMPP(虽然我没有使用RMySQL进行连接),但最后我能够使用PHP页面编写R文件,执行该文件,并将R写入MySQL表。据我所知,这仅适用于MacOSX ...
所有使用的软件均采用dmg格式,因此无需二进制安装。
Download R并运行一些基本命令以确保您有效。
在R中,您需要安装RODBC(如果您还没有)。在R控制台中输入此内容。
install.packages("RODBC")
这会安装RODBC,但自从OS Mavericks以来,某些文件不再包含在内,因此您收到错误消息
未找到ODBC标头sql.h和sqlext.h
你需要在正确的位置获取sql.h和sqlext.h文件。
要以最简单的方式执行此操作,请确保已安装homebrew(简单说明)。然后在终端中使用此code进行安装。
完成后,再次进入R控制台
install.packages("RODBC")
搜索MySQL for the appropriate ODBC installation。我正在运行Mac OSX 10.6,所以我下载了dmg并安装了它。这样可以解决问题。
现在是棘手的部分。显然,Mac OX在最近的操作系统发布后取出了ODBC管理器,因此您需要下载ODBC管理器(http://www.odbcmanager.net/)。它也是一个dmg文件,所以只需拖放到您的实用程序文件夹即可。
我在5.3.6 dmg安装时遇到了困难(保持失败),所以我安装了5.2.7。
打开ODBC管理器。您需要配置DSN,因此请单击“系统DSN”选项卡,然后单击“添加”。
您将看到一个弹出窗口,要求您选择一个驱动程序。我有基于MySQL ODBC安装的“MySQL ODBC 5.2 Driver”。单击“确定”。如果您没有看到驱动程序,则需要确认已安装MySQL ODBC。
在下一个弹出窗口中,根据需要创建数据源名称(DSN) - 但请记住,这是您从R调用时需要使用的名称。在下面的关键字区域(关键字将在引号和值将在括号中),ADD
“database”(包含数据库名称的值)
“server”(对于本地环境不使用localhost - 而是使用本地IP地址127.0.0.1。***这是我的关键部分)
“uid”(数据库用户ID)
“pwd”(数据库密码)
“socket”(不确定这是否是必需的,但经过多次教程之后,它留在我的配置中并且工作正常,所以也许你需要它。你可以在my.cnf找到你的套接字位置 - 做一个聚光灯搜索。套接字文件位置在CLIENT)下
以下是我的配置:
DSN(“测试” - 这是在顶部)
数据库(“电视”)
socket(“/Applications/XAMPP/xamppfiles/var/mysql.sock”)
uid(“root”)
pwd(“”)
服务器(“127.0.0.1”)
在R中,执行以下内容 - 我相信每次启动R并在进行MySQL查询之前,都需要完成最后3个步骤。
库(RODBC)
确保您已从XAMPP控制面板启用了MySQL和Apache。
然后执行
odbcConnect(“test”) - 注意我在双引号中使用DSN的方式。必要时互换。
这应该让你开始运行。您可以阅读有关在R中进行MySQL查询的其他教程。
我从Stack Overflow上的很多精彩帖子(感谢所有人!),随机的其他网站/电子邮件交换历史以及Joseph Adler的“R In A Nutshell”一书中共同攻击了这一点,但如果我错过了,请告诉我某事或不清楚。
祝你好运!答案 2 :(得分:1)
我还花了几个小时试图在Windows 10中完成这项工作,从而出现错误。我发现RMySQL的修复程序既凌乱又复杂,但RODBC更加轻松,优雅地导致了解决方案。我有R,RStudio,MySQL服务器,MySQL Workbench,并且需要以下额外步骤才能使其工作:
install.packages(RODBC)
现在您可以连接,运行查询并断开连接:
library(RODBC)
cursor <- odbcConnect("mysql_odbc", uid="root", pwd="HaysPuffyWalton5")
out <- sqlQuery(cursor, "SELECT * FROM emp WHERE deptno = 10");
close(cursor);
答案 3 :(得分:0)
这不是一个直接的答案,但你仍然觉得它很有帮助:
使用更新版本的R(目前为2.15)
在Windows平台上,我宁愿使用RODBC + Windows MySQL驱动程序,除非您处于具有异构平台(即Linux和Windows)的环境中,其中代码在团队成员之间共享。甚至然后在相同的脚本中选择使用RMySQL和RODBC,具体取决于它运行的平台是一个简单的if() {...} else {...}
请注意,我并不是说没有成功案例可以解决您的问题,但恕我直言,您将会更快地启动并运行上述内容。
答案 4 :(得分:0)
这对我有用:使用Windows XP SP3 32位操作系统,R Studio,Rv2.15.3
按照以下说明操作:http://biostat.mc.vanderbilt.edu/wiki/Main/RMySQL
但是,如果您已下载MySQL版本5.6,则必须复制libmysql.lib
存在于此路径中:D:\Program Files\MySQL\MySQL Server 5.6\lib
并创建一个新文件夹,如:D:\Program Files\MySQL\MySQL Server 5.6\lib\opt
并粘贴libmysql.lib
文件夹中的opt
以上。
然后Renviron.site
文件将包含:MYSQL_HOME=D:/Program Files/MySQL/MySQL Server 5.6
。请注意正斜杠。
最后按照上面链接中提供的install.packages行的说明进行操作。我不得不做一些试验才能最终得到它。
答案 5 :(得分:0)
如果这是R中的错误
library(RMySQL)
#-----------
Loading required package: DBI
Error : .onLoad failed in loadNamespace() for 'RMySQL', details
call: i$Location
error: $ operator is invalid for atomic vectors
Error: package or namespace load failed for 'RMySQL'
然后从外面R
set MYSQL_HOME=F:/Program Files/MySQL/MySQL Server 5.6
AND BACK INSIDE:
library(RMySQL)
#Loading required package: DBI
#MYSQL_HOME defined as F:/Program Files/MySQL/MySQL Server 5.6
或者只是来自内部R
Sys.setenv(MYSQL_HOME = "F:/Program Files/MySQL/MySQL Server 5.6")
library(RMySQL)
#Loading required package: DBI
#MYSQL_HOME defined as F:/Program Files/MySQL/MySQL Server 5.6
答案 6 :(得分:0)