Linux Fedora - Wie erstellt man einen DSN der Datenbank in einer MySQL-Instanz, die auf localhost läuft und von RODBC verwendet wird?

2583
Jubbles

Ein paar Vorrunden -

OS: Fedora Release 16 (Verne)

MySQL-Server-Version: 5.5.29 MySQL Community Server

R-Version: 2.15.1 (2012-06-22) - "Geröstete Marshmallows"

Ich verwende einen MySQL-Server, der auf localhost (127.0.0.1) gehostet wird.

Ich habe R-Skripte, die die RODBCBibliothek verwenden und möchte einen DSN (Data Source Name) an die odbcConnect()Funktion von übergeben können ODBC.

Nach einigem Googling (es gibt ein paar Seiten, die sich mit MS SQL ServerDSNs RODBCauf einem Linux-Betriebssystem befassen ), bin ich der Meinung, dass ich die Konfigurationsdatei unter auffüllen muss /etc/odbc.ini. Derzeit sind hier die Dateiinhalte:

[ODBC Data Sources] myDSN = MySQL  [myDSN] Description = my Data Source Name Driver = MySQL UID = root PWD = *password* Port = 3306 Database = my_database 

Ich habe auch gelesen, dass der Treiberwert in der obigen Datei darauf verweist /etc/odbcinst.ini. Hier sind die Inhalte:

[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 

Beim Ausführen von R erhalte ich jedoch eine Fehlermeldung.

> 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 

Ich habe überprüft, dass die Datei /usr/lib/libmyodbc5.soexistiert. Es ist eigentlich ein Link zu /usr/lib/libmyodbc5-5.1.8.so; Ich habe versucht, diesen Dateinamen in DriverZeile von zu ersetzen /etc/odbcinst.ini, erhalte aber dieselbe Fehlermeldung von R.

Wie kann ich diese Arbeit machen, währendRODBC ich sie noch benutze ?

===== UPDATE =====

Ich entfernte, was ich manuell in /etc/odbcinst.ini hinzugefügt hatte, und fuhr dann mit den folgenden Schritten fort.

Ich habe versucht zu installieren mysql-connector-odbc, aber es wurde mir gesagt, dass es bereits installiert war. Also hörte ich meinen MySQL - Server, entfernt das mysql-connector-odbcPaket mit sudo yum remove mysql-connector-odbc, neu installiert das mysql-connector-odbcPaket, und begann mit dem MySQL - Server.

Als ich versuchte, die gleichen R-Befehle wie oben auszuführen, erhielt ich die gleichen Ergebnisse.

0

1 Antwort auf die Frage

0
Tony Cesaro

Ich konnte Ihre Ausgabe auf CentOS 6.3 reproduzieren. Danach installierte ich das Paket mysql-connector-odbc: yum install mysql-connector-odbcund es konnte dann eine Verbindung zur MySQL-Datenbank hergestellt werden. Entfernen Sie zunächst das, was Sie manuell hinzugefügt haben, /etc/odbcinst.iniund installieren Sie dann mysql-connector-odbc, das /etc/odbcinst.inifür Sie aktualisiert wird . Geben Sie dem einen Versuch und führen Sie Ihr Skript erneut aus. Teilen Sie uns dann mit, wenn das Problem weiterhin auftritt.

Es klingt auch so, als wären einige inkompatible Pakete installiert. Wenn Sie mit MySQL beginnen (von mysql.com) (überprüfen mit rpm -qa | grep -i mysql), entfernen Sie sie und installieren Sie diejenigen, die Teil der Standardverteilungs-Yum-Repositorys sind. Sie müssen möglicherweise alle entfernen und dann installieren, was Sie benötigen.