Linux Fedora - 如何在本地主机上运行的 MySQL 实例中创建数据库的 DSN 以供 RODBC 使用?

Linux Fedora - 如何在本地主机上运行的 MySQL 实例中创建数据库的 DSN 以供 RODBC 使用?

一些准备工作 -

操作系统: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 ServerDSN 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.iniR 收到相同的错误。

我怎样才能做到这一点同时仍在使用RODBC

=====更新=====

我删除了手动添加到 /etc/odbcinst.ini 的内容,然后继续执行以下步骤。

我尝试安装mysql-connector-odbc,但被告知它已经安装。所以我停止了 MySQL 服务器,删除了mysql-connector-odbcsudo 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 存储库的软件包。您可能需要将它们全部删除,然后安装所需的软件包。

相关内容