RubyODBC Невозможно выделить SQLHENV - PullRequest
5 голосов
/ 14 сентября 2009

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

http://toolmantim.com/articles/getting_rails_talking_to_sqlserver_on_osx_via_odbc

Все работает на стороне FreeTDS и unixODBC. Я могу видеть и запрашивать базу данных, используя tsql.

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

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

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

Ответы [ 7 ]

5 голосов
/ 27 октября 2009

Я начал получать эту ошибку при обновлении до 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
2 голосов
/ 13 апреля 2010

System

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 голос
/ 25 ноября 2010

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

Но на Centos 5.5 не Ubuntu

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

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

0 голосов
/ 30 марта 2010

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

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 пакета Ubuntu ruby-odbc.

0 голосов
/ 02 марта 2010

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

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

Дополнительные подробности доступны в блоге Carsten Gehling:

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

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

0 голосов
/ 02 ноября 2009

Кстати, следуя инструкциям по перекомпиляции Ruby-ODBC в Ubuntu 9.10 (Karmic), потребовалась установка либо пакета libiodbc2-dev, либо пакета unixodbc-dev. При использовании libiodbc2-dev у меня возникали ошибки сегментации при попытке моей программы на Ruby:

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

.. но без проблем при использовании unixodbc-dev.

0 голосов
/ 14 сентября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...