2009-09-14 36 views
5

Tôi đang cố gắng kết nối với SQL Server trên Ubuntu 9,04 bằng Ruby. Tôi dịch và thực hiện tất cả các bước được nêu trong việc OSX nói chuyện với SQL Server từ đây:RubyODBC Không thể phân bổ SQLHENV

http://toolmantim.com/articles/getting_rails_talking_to_sqlserver_on_osx_via_odbc

Tất cả mọi thứ đang làm việc trên freetds và unixODBC kết thúc. Tôi có thể xem và truy vấn cơ sở dữ liệu bằng cách sử dụng tsql.

Khi tôi cố gắng truy cập vào cơ sở dữ liệu từ Ruby sử dụng IRB tôi nhận được lỗi sau:

DBI :: DatabaseError: thực tập (0) [RubyODBC] Không thể phân bổ SQLHENV

Có ai chạy vào trong này và tôi có thể làm gì để giải quyết vấn đề này?

Trả lời

0

Đi vả tôi thực sự làm việc này sau khi gửi câu hỏi của mình. Những gì tôi đã kết thúc làm là gỡ cài đặt libdbd-odbc-ruby và libdbi-ruby và sau đó cài đặt lại chúng bằng cách cài đặt libdbi-ruby trước và sau đó cài đặt libdbd-odbc-ruby. Tôi đoán khi tôi cài đặt chúng trước đây, một cái gì đó phải rối tung lên.

5

Tôi bắt đầu gặp lỗi này khi tôi nâng cấp lên Ubuntu 9.10 (Karmic Koala). Mẹo của bạn liên quan đến thứ tự cài đặt các gói Ubuntu không hoạt động đối với tôi.

Dường như việc khắc phục là biên dịch thủ công ruby-odbc.

wget http://www.ch-werner.de/rubyodbc/ruby-odbc-0.9997.tar.gz 
tar xzvf ruby-odbc-0.9997.tar.gz 
cd ruby-odbc-0.9997 
ruby extconf.rb --with-dlopen 
make 
sudo make install 
+0

Cảm ơn bạn, cuối cùng đã giải quyết được các vấn đề tôi đã gặp phải. Phải là một lỗi cụ thể của Karmic. –

+0

Điều này giải quyết vấn đề của tôi cũng ... GOD !! Cảm ơn!! – mickey

+0

Tôi muốn thêm rằng tất cả dường như đang hoạt động khi sử dụng Ruby Enterprise Edition. Công cụ cài đặt đá quý ol 'thường xuyên hoạt động như của REE 1.8.7-2010.01 –

0

BTW, theo các hướng dẫn để biên dịch lại Ruby-ODBC trên Ubuntu 9.10 (Karmic) yêu cầu lắp đặt một trong hai libiodbc2-dev hoặc gói unixodbc-dev. Khi sử dụng libiodbc2-dev, tôi có lỗi phân đoạn khi chương trình Ruby của tôi thử:

connection.select_all('select top 15 * from log_device_healths') 

.. nhưng không có vấn đề gì khi sử dụng unixodbc-dev thay thế.

0

Giải pháp của Tim Morgan không hiệu quả đối với tôi. Tuy nhiên tôi đã có thể có được những điều làm việc bằng cách cài đặt một phiên bản cũ của libodbc-ruby (0,9995) từ đây:

http://mirrors.kernel.org/ubuntu/pool/universe/libo/libodbc-ruby/libodbc-ruby1.8_0.9995-1_i386.deb

chi tiết bổ sung có sẵn từ Carsten Gehling blog:

http://gehling.dk/2010/02/the-woes-of-libodbc-ruby1-8-and-debian-ubuntu/

Hãy cẩn thận mặc dù - Trình quản lý cập nhật của Ubuntu sẽ vui vẻ "nâng cấp" phiên bản libodbc-ruby này lên mức 0,9997-2 bị hỏng. Tôi vô tình ghi đè lên phiên bản cũ theo cách này chỉ để kết thúc ở đây, cố gắng tìm ra cách tôi đã sửa nó lần trước.

0

Vâng, có vẻ như câu trả lời khác của tôi đã ngừng hoạt động đối với tôi. This thread đã giúp tôi giải quyết vấn đề theo một cách khác và tôi muốn chia sẻ nó ở đây.

sudo gem uninstall ruby-odbc 
sudo rm /usr/local/lib/site_ruby/1.8/x86_64-linux/odbc.so 
cd /tmp 
wget http://mirrors.kernel.org/ubuntu/pool/universe/libo/libodbc-ruby/libodbc-ruby1.8_0.9995-1_amd64.deb 
sudo dpkg -i libodbc-ruby1.8_0.9995-1_amd64.deb 

Nếu bạn không ở trên nền tảng 64 bit, bạn cần phải tải xuống gói Debian khác.

Về cơ bản, vấn đề giải quyết vấn đề đang cài đặt phiên bản 0.9995 của gói Ubuntu ruby-odbc.

2

Hệ thống

Ubuntu 9.10 64 bit

tôi phải chỉ định thư mục odbc trong rubyodbc cài đặt

 
wget http://www.ch-werner.de/rubyodbc/ruby-odbc-0.9997.tar.gz 
tar xzvf ruby-odbc-0.9997.tar.gz 
cd ruby-odbc-0.9997 
ruby extconf.rb --with-odbc-dir=/usr/lib/odbc --disable-dlopen 
make 
sudo make install 
1

tôi đã cùng một vấn đề.

Nhưng trên CentOS 5.5 không Ubuntu

Đã thử nhiều diễn đàn/giải pháp không có niềm vui.

Thông báo lỗi gợi ý tham chiếu bị thiếu cho unixODBC. Được thiết lập bằng biến LD_LIBRARY_PATH. Tìm cách khác để đặt đường dẫn, bằng cách tạo
/etc/ld.so.conf.d/odbc.conf. thêm vị trí unixODBC vào tệp tức là/usr/local/lib. Chạy, sudo ldconfig.

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