Câu hỏi Linux Fedora - làm thế nào để tạo DSN của cơ sở dữ liệu trong MySQL instance chạy trên localhost để sử dụng bởi RODBC?


Một vài sơ bộ -

Hệ điều hành: Fedora phát hành 16 (Verne)

Phiên bản máy chủ MySQL: 5.5.29 Máy chủ cộng đồng MySQL

Phiên bản R: 2.15.1 (2012-06-22) - "Marshmallows rang"

Tôi đang chạy một máy chủ MySQL được lưu trữ tại localhost (127.0.0.1).

Tôi có tập lệnh R sử dụng RODBC thư viện và muốn có thể chuyển Tên nguồn dữ liệu (DSN) cho odbcConnect() chức năng của ODBC.

Sau khi một số Googling (có một vài trang mà đối phó với MS SQL Server DSN với RODBC trên một hệ điều hành Linux), tôi có ý kiến ​​rằng tôi cần phải điền tệp cấu hình vào /etc/odbc.ini . Hiện tại, đây là nội dung tập tin:

[ODBC Data Sources]
myDSN = MySQL

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

Tôi cũng đọc rằng giá trị Driver trong tập tin trên trỏ đến /etc/odbcinst.ini . Dưới đây là nội dung của nó:

[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

Tuy nhiên, khi tôi chạy R, tôi nhận được một thông báo lỗi.

> 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

Tôi đã xác minh rằng tệp /usr/lib/libmyodbc5.so tồn tại. Nó thực sự là một liên kết đến /usr/lib/libmyodbc5-5.1.8.so; Tôi đã thử thay thế tên tệp này trong Driver dòng /etc/odbcinst.ini nhưng nhận được lỗi tương tự từ R.

Làm cách nào tôi có thể thực hiện công việc này trong khi vẫn đang sử dụng RODBC?

===== CẬP NHẬT =====

Tôi đã xóa những gì tôi đã thêm thủ công vào /etc/odbcinst.ini và sau đó thực hiện các bước sau.

Tôi đã cố cài đặt mysql-connector-odbc, nhưng đã được nói rằng nó đã được cài đặt. Vì vậy, tôi đã dừng máy chủ MySQL của mình, xóa mysql-connector-odbc gói với sudo yum remove mysql-connector-odbc, cài đặt lại các mysql-connector-odbc gói và bắt đầu máy chủ MySQL.

Khi tôi thử chạy các lệnh R giống như trên, tôi nhận được kết quả tương tự.


0
2017-08-18 18:06


gốc




Các câu trả lời:


Tôi đã có thể tái tạo vấn đề của bạn trên CentOS 6.3. Sau đó, tôi đã cài đặt gói mysql-connector-odbc: yum install mysql-connector-odbc và sau đó nó có thể kết nối với cơ sở dữ liệu MySQL. Trước tiên, xóa nội dung bạn đã thêm theo cách thủ công vào /etc/odbcinst.ini và sau đó cài đặt mysql-connector-odbc, sẽ cập nhật /etc/odbcinst.ini cho bạn. Cung cấp cho một shot và chạy kịch bản của bạn một lần nữa, sau đó cho chúng tôi biết nếu vấn đề vẫn còn xảy ra.

Ngoài ra, có vẻ như có một số gói không tương thích được cài đặt. Nếu bạn có bất kỳ bắt đầu với MySQL- (từ mysql.com) (kiểm tra với rpm -qa | grep -i mysql), loại bỏ chúng và cài đặt chúng là một phần của kho phân phối yum tiêu chuẩn. Bạn có thể cần phải loại bỏ tất cả và sau đó cài đặt những gì bạn cần.


0
2017-08-19 17:49