一些准备工作 -
操作系统:Fedora 版本 16(Verne)
MySQL 服务器版本:5.5.29 MySQL 社区服务器
R 版本:2.15.1 (2012-06-22) -- “烤棉花糖”
我正在运行托管在本地主机(127.0.0.1)的 MySQL 服务器。
我有使用该库的 R 脚本RODBC
,并且希望能够将数据源名称 (DSN) 传递给odbcConnect()
函数ODBC
。
经过一些 Google 搜索(有几个页面涉及Linux 操作系统上的MS SQL Server
DSN RODBC
),我认为我需要填充配置文件/etc/odbc.ini
。目前,以下是文件内容:
[ODBC Data Sources]
myDSN = MySQL
[myDSN]
Description = my Data Source Name
Driver = MySQL
UID = root
PWD = *password*
Port = 3306
Database = my_database
我还看到上述文件中的 Driver 值指向/etc/odbcinst.ini
。其内容如下:
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc5.so
Setup = /usr/lib/libodbcmyS.so
Driver64 = /usr/lib64/libmyodbc5.so
Setup64 = /usr/lib64/libodbcmyS.so
FileUsage = 1
然而,当我运行 R 时,收到一条错误消息。
> library(RODBC)
> cn <- odbcConnect('myDSN')
Warning messages:
1: In odbcDriverConnect("DSN=myDSN") :
[RODBC] ERROR: state 01000, code 0, message [unixODBC][Driver Manager]Can't open lib '/usr/lib/libmyodbc5.so' : file not found
2: In odbcDriverConnect("DSN=myDSN") : ODBC connection failed
我已验证该文件/usr/lib/libmyodbc5.so
存在。它实际上是一个链接/usr/lib/libmyodbc5-5.1.8.so
;我尝试在行中替换此文件名,Driver
但从/etc/odbcinst.ini
R 收到相同的错误。
我怎样才能做到这一点同时仍在使用RODBC
?
=====更新=====
我删除了手动添加到 /etc/odbcinst.ini 的内容,然后继续执行以下步骤。
我尝试安装mysql-connector-odbc
,但被告知它已经安装。所以我停止了 MySQL 服务器,删除了mysql-connector-odbc
包sudo yum remove mysql-connector-odbc
,重新安装包mysql-connector-odbc
,并启动 MySQL 服务器。
当我尝试运行与上述相同的 R 命令时,我收到了相同的结果。
答案1
我能够在 CentOS 6.3 上重现您的问题。之后,我安装了 mysql-connector-odbc 包:yum install mysql-connector-odbc
然后它就可以连接到 MySQL 数据库了。首先,删除您手动添加的内容/etc/odbcinst.ini
,然后安装 mysql-connector-odbc,它将为您更新/etc/odbcinst.ini
。试一试并再次运行您的脚本,然后让我们知道问题是否仍然存在。
此外,似乎安装了一些不兼容的软件包。如果您有任何以 MySQL- 开头的软件包(来自 mysql.com)(使用 进行检查rpm -qa | grep -i mysql
),请删除它们并安装属于标准发行版 yum 存储库的软件包。您可能需要将它们全部删除,然后安装所需的软件包。