2009-09-14 3 views
5

Я пытаюсь подключиться к SQL Server на Ubuntu 9.04 с помощью Ruby. Я перевел и все шаги, описанные в получении OSX говорить с SQL Server здесь:RubyODBC Невозможно выделить SQLHENV

http://toolmantim.com/articles/getting_rails_talking_to_sqlserver_on_osx_via_odbc

Все работает на FreeTDS и UnixODBC конца. Я вижу и запрашиваю базу данных с помощью tsql.

Когда я пытаюсь получить доступ к базе данных с Ruby, используя IRB я получаю следующее сообщение об ошибке:

DBI :: DatabaseError: INTERN (0) [RubyODBC] Невозможно выделить SQLHENV

Кто-нибудь работать в этом и что я могу сделать, чтобы решить эту проблему?

ответ

0

Пойдите fig, что я действительно получил эту работу после отправки моего вопроса. То, что я закончил, это удалить libdbd-odbc-ruby и libdbi-ruby, а затем переустановить их, установив сначала libdbi-ruby, а затем установив libdbd-odbc-ruby. Наверное, когда я их устанавливал раньше, что-то должно испортиться.

5

Я начал получать эту ошибку, когда обновился до Ubuntu 9.10 (Karmic Koala). Ваша рекомендация относительно порядка установки пакетов Ubuntu не работала для меня.

Кажется, исправить было вручную скомпилировать 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

Спасибо, что, наконец, решает проблемы, которые у меня были. Должна быть ошибка, связанная с кармикой. –

+0

Это решило мою проблему также ... БОГ !! Благодаря!! – mickey

+0

Я хотел добавить, что все, кажется, работает при использовании Ruby Enterprise Edition. Регулярные работы по установке ol 'gem работают с REE 1.8.7-2010.01 –

0

BTW, следуя инструкции, перекомпилировать рубиново-ODBC на Ubuntu 9.10 (кармический) требуется установка либо libiodbc2-разработчика или пакет UnixODBC-Dev. При использовании libiodbc2-DEV, я получил ошибку сегментации, когда моя программа Руби пыталась:

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

..но не проблемы при использовании UnixODBC-DEV вместо этого.

0

Решение Тима Моргана не работает для меня. Однако я был в состоянии получить все заработало, установив более старую версию libodbc-рубин (0.9995) отсюда:

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

Дополнительная информация доступна из блога Карстена Джехлинг в:

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

Будьте осторожны - Менеджер обновлений Ubuntu с радостью «обновит» эту версию libodbc-ruby до сломанного 0.9997-2. Я случайно переписал более старую версию таким образом, чтобы вернуться сюда, пытаясь понять, как я исправил ее в прошлый раз.

0

Ну, похоже, мой другой ответ прекратил работать на меня. This thread помог мне решить проблему по-другому, и я хотел бы поделиться ею здесь.

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 

Если вы не на 64-битной платформе, вам нужно загрузить другой пакет Debian.

В основном, решение этой проблемы - установка версии 0.9995 пакета ruby-odbc Ubuntu.

2

Ubuntu 9.10 64 бит

я должен был указать Odbc каталог в rubyodbc установки

 
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

У меня была такая же проблема.

Но Centos 5.5 не Ubuntu

перепробовал много форумов/решений не радость.

Сообщение об ошибке указывает на отсутствие ссылки на unixODBC. Который настраивался с использованием переменной LD_LIBRARY_PATH. Нашел другой способ установить путь, создав
/etc/ld.so.conf.d/odbc.conf. Добавить местоположение unixODBC в файл, т.е./usr/local/lib. Запустить, sudo ldconfig.

Смежные вопросы