2016-02-13 16 views
8

Tôi đang cố kết nối từ ứng dụng python với pyodbc đến máy chủ MS SQL. Tôi có pyodbc và unixODBC cài đặt và tôi đã cố gắng để cài đặt trình điều khiển MS cho Linux. Tôi nghĩ rằng vấn đề là trình điều khiển MS đã thiếu phụ thuộc nhưng gần như tôi có thể nói các phụ thuộc được cài đặt. Bởi vì trình điều khiển Microsoft không thể cài đặt thông qua yum tôi đã phải wget và chạy kịch bản cài đặt. Vì vậy, có Im chắc chắn có một số công việc thủ công tôi phải làm để có được các liên kết mất tích dưới đây để giải quyết. Tôi không chắc chắn làm thế nào để làm điều này như tôi mới vào điều này trên Linux. Tôi đã bao gồm các tập tin cấu hình của tôi cũng chỉ trong trường hợp.Lỗi trình liên kết với libmsodbcsql-13.0.so.0.0 ngăn chặn pyODBC kết nối MS SQL. CentOS 7

Khi tôi chạy ...

ldd /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0 

tôi nhận được sau ...

/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0) 

/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0) 

linux-vdso.so.1 => (0x00007fff22b27000) 
libdl.so.2 => /lib64/libdl.so.2 (0x00007f03de43f000) 
libodbcinst.so.2 => /lib64/libodbcinst.so.2 (0x00007f03de22d000) 
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f03de027000) 
libgss.so.3 => not found 
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f03ddd42000) 
libcrypto.so.1.0.0 => not found 
libssl.so.1.0.0 => not found 
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f03dda39000) 
....(THE REST ARE FOUND) 

odbcinst.ini odbc.ini

Bất kỳ sự giúp đỡ hoặc gợi ý được hoan nghênh. Cảm ơn bạn!

+0

ảnh chụp màn hình của bạn không thể đọc được. Bạn không thể chỉ sao chép/dán các thông báo lỗi vào Q của bạn như bạn đã làm với đầu ra 'ldd'. Tốt luc ,. – shellter

+0

Tôi nghĩ rằng bạn đang làm việc với một phiên bản unixODBC không tương thích cho msodbcsql. Kiểm tra lệnh '' 'odbc_config --version''' trả về phiên bản mong đợi cho msodbcsql. – bull90

Trả lời

2

Tôi nhớ mình cũng gặp sự cố này nhưng đã hơn một năm trước và tôi không có quyền truy cập vào máy chủ đó nữa.

Theo như tôi có thể nhớ đó là phiên bản không phù hợp. Nếu bạn thấy đầu ra ldd của mình, họ đang tìm libgss.so.3, libcrypto.so.1.0.0, v.v. Có thể bạn đã cài đặt phiên bản khác của các thư viện này trên hệ thống của mình.

Bằng cách tìm các ghi chú cài đặt của tôi, có vẻ như tôi đã khắc phục sự cố bằng cách tạo liên kết (mềm) "trỏ" các thư viện tôi có trên hệ thống của mình. Và - tất nhiên - tôi đã đưa ra những liên kết này mà các tên msodbc đang tìm kiếm. Có ... một chút "thô lỗ" nhưng nó làm việc cho tôi.

+0

Cảm ơn bạn đã xác nhận. Đây là hướng tôi đang hướng tới. Câu hỏi nhanh. Tôi có tạo liên kết mềm ở vị trí mà tệp nhị phân đang tìm kiếm tệp không? Vì vậy, trong trường hợp của tôi nó đi trong /lib64/libstdc++.so.6 và chuyển hướng đến bất cứ nơi nào phiên bản thực tế là? Bất kỳ khả năng nào của lệnh ln -s mẫu để tôi bắt đầu. Cảm ơn. –

+0

Tôi không thể tạo liên kết mềm dưới/lib hoặc/usr/lib trên máy chủ đó (các hạn chế bảo mật và tôi không có mật khẩu gốc). Vì vậy ... Tôi tạo ra các liên kết mềm trong một thư mục theo thư mục home-dir ('$ {HOME}/mslib /') và thêm thư mục này vào LD_LIBRARY_PATH của tôi ... – mauro

+0

Lệnh mẫu: 'mkdir $ HOME/mslib' và sau đó 'ln -s /usr/lib/libgss-3.0.0 $ HOME/mslib/libgss-2.8.0' (Tôi không nhớ số phiên bản - Tôi chỉ viết các số ngẫu nhiên ở đây). Cuối cùng, đặt thư mục LIB mới của bạn ** trước ** các thư mục khác: 'xuất LD_LIBRARY_PATH = $ {HOME}/mslib: $ {LD_LIBRARY_PATH}' – mauro

Các vấn đề liên quan