我在从mac on Mac(Mac OS X 10.11.2)访问我的MySQL数据库时遇到问题。以下代码:
library("RODBC")
mycom <- odbcConnect("wsn_mysql_5", uid="root", pwd="*****")
给出了这个错误:
1: In RODBC::odbcDriverConnect("DSN=wsn_mysql_5;UID=root;PWD=****") :
[RODBC] ERROR: state 00000, code 15509574, message
[iODBC][DriverManager]dlopen(/usr/local/lib/libmyodbc5a.so,
6): no suitable image found. Did find:
/usr/local/lib/libmyodbc5a.so: mach-o, but wrong architecture
2: In RODBC::odbcDriverConnect("DSN=wsn_mysql_5;UID=root;PWD=****") :
[RODBC] ERROR: state IM003, code 15509574, message
[iODBC][Driver Manager]Specified driver could not be loaded
到目前为止我尝试过:
我在iODBC管理员中测试时遇到此错误:
[iODBC][Driver manager]dlopen(/usr/local/lib/libmyodbc5w.so, 6): no suitable image found.
Did find: /usr/local/lib/libmyodbc5w.so: mach -o, but wrong architecture.
How to add ODBC to MAMP on OSX让我认为这是一个32位与64位的问题。
iODBC的常见问题解答说明了以下类型的错误:
[iODBC] [驱动程序管理器]无法加载指定的驱动程序
为什么会出现这种情况有几个原因,并且通过体系结构进行思考会有所帮助。您的应用程序已成功加载libiodbc,并且已找到odbc.ini文件(或通过ODBCINI环境变量等效),并且在该odbc.ini中找到了与您的连接中请求的名称匹配的DSN。
但是,驱动程序管理器在加载`Driver =&#39;中指定的库时遇到问题。 DSN定义的一行。要么它不存在,要么它的权限不足以允许你的应用程序加载它(它必须是可读的和可执行的,并且导致它的目录必须是可执行的),或者文件可能不是动态库 - 它可以是一个静态库(除了AIX之外的* .a文件)或者是否已损坏。这些都是要检查的东西,或者如果所有权限都签出,您最好重新安装驱动程序。
我也重新安装了驱动程序,但它没有改变任何内容。
阅读this后,我检查了odbc.ini和obdcinst.ini。
我将odbc.ini改为:
[ODBC Data Sources]
wsn_mysql_7 = wsn_mysql_7
[ODBC]
TraceLibrary=
[wsn_mysql_7]
Driver = /usr/local/lib/libmyodbc5w.so
DATABASE = wsn_db
DESCRIPTION = DSN for wsn_db in R
SERVER = localhost
UID = root
PASSWORD = *****
和odbcinst.ini到
[ODBC Drivers]
MySQL ODBC 5.2 ANSI Driver=Installed
MySQL ODBC 5.2 Unicode Driver=Installed
[ODBC Connection Pooling]
PerfMon=0
Retry Wait=
[MySQL ODBC 5.2 ANSI Driver]
Driver = /usr/local/lib/libmyodbc5a.so
Description = mySQL driver
Threading = 0
[MySQL ODBC 5.2 Unicode Driver]
Driver = /usr/local/lib/libmyodbc5w.so
Description = mySQL driver
Threading = 0
但它似乎没有改变任何东西。
我还尝试了基于this question的替代RODBC代码。
mycom <- odbcDriverConnect("Provider=MSDASQL;Driver={MySQL ODBC 5.2 UNICODE Driver};
Server=localhost;database=wsn_db;Uid=root;Pwd=*****;Option=3")
我不确定下一步该做什么?即使是以完全不同的方式访问R中的mySQL数据也会有所帮助。
答案 0 :(得分:1)
我终于通过使用unixODBC和使用64位ANSI连接器来管理工作配置。如果您尝试使用RODBC连接到MySQL数据库,我建议:
我首先使用了Unicode驱动程序,但出现了以下错误:
Warning messages:
1: In RODBC::odbcDriverConnect("DSN=wsn_db_dsn;UID=root;PWD=****") :
[RODBC] ERROR: state H, code 0, message [unixODBC][
2: In RODBC::odbcDriverConnect("DSN=wsn_db_dsn;UID=root;PWD=****") :
ODBC connection failed
我通过选择RODBC error - ODBC connection failed - can't connect to MySQL with my mac (mavericks)中建议的ANSI驱动程序来纠正此问题。
我希望这可以为某人节省时间。