预先免责声明:我不是程序员,所以......要温柔。
过去几天我一直在尝试让 Mac 上的 R studio 连接到 MySQL 数据库。遇到的第一个障碍是运行安装 ODBC 包的命令时:
configure: error: "ODBC headers sql.h and sqlext.h not found" ERROR: configuration failed for package 'RODBC' ** Removing '/usr/lib64/R/library/RODBC'
经过大量谷歌搜索后,我发现这个问题可以通过运行以下命令安装和更新名为brew的东西来解决:
brew update && brew install unixODBC &&\wget "http://cran.r-project.org/src/contrib/RODBC_1.3-10.tar.gz "&&\R CMD INSTALL RODBC_1.3-10.tar.gz
安装了 RODBC。现在,我尝试通过运行以下语法连接到数据库(如在线和包文档中所述):
odbcConnect(dsn, uid = "", pwd = "", ...)
当我这样做时,我收到以下错误:
警告消息: 1:在 odbcDriverConnect("DSN=xyz;UID=xyz;PWD=xyz") 中: [RODBC] 错误:状态 IM012,代码 0,消息 [unixODBC][驱动程序管理器]DRIVER 关键字语法错误 2:在 odbcDriverConnect("DSN=xyz;UID=xyz;PWD=xyz") 中: ODBC 连接失败
所以,语法似乎是错误的,但我不知道哪里错误。 R 文档说错误 IM012 是一个语法错误(注意:将“XYZ”替换为实际凭据)我有几个问题:
第一:
在MySQL Workbench上,我输入以下参数来访问数据库: 1. 连接名称:数据库的虚构名称 2. 主机名:亚马逊云数据库链接 3.端口(保留默认值3306) 4. 用户名 5.密码
在 odbcConnect(dsn, uid = "", pwd = "", ...) 的 RODBC 语法中的哪个位置放置数据库的位置(可能是 IP 或链接)?我对 DNS 进行了尝试,但没有成功(即出现相同的语法错误)。
第二:
最重要的是回答我的问题:
为什么我会收到此 IM012 语法错误?正确的语法是什么?在这个语法中哪里有空间告诉程序数据库所在的位置?
预先感谢您的帮助!
最佳答案
如果文档说:
odbcConnect(dsn, uid = "", pwd = "", ...)
您提供了:
odbcDriverConnect("DSN=xyz;UID=xyz;PWD=xyz")
这不是相同的语法。仅注意每个参数值周围的引号。另外,似乎每个键值对都应该用逗号分隔,而不是分号。
它也没有说 dsn=""
,它只是说 'dsn'
所以也许你可以用 ODBC 配置中的 DSN 名称替换它,这听起来像是你喜欢来自 MySQL Workbench 吗?我使用 ODBC 管理器来创建 DSN,但在 Mac 上,它们通常会出现在/Library/ODBC/odbc.ini 或用户帐户中的类似位置。
省略号表明您可以提供更多参数。通常,在 ODBC 配置中,您在 DSN 内提供 DATABASE="192.168.254.85"、PORT="3306"等,因此无需在调用该方法时提供参数。 UID 和 PWD 是“在运行时”提供的,因此您无需将凭据存储在配置文件中。
关于mysql - 如何在 Mac OS 10.10.3 (Yosemite) 上使用 ODBC 将 R 连接到 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31124404/