Подключение к SQL Server (из Ubuntu): [RubyODBC] Невозможно выделить SQLHENV - PullRequest
0 голосов
/ 20 января 2010

Я пытаюсь подключить свое приложение Ruby on Rails к устаревшей базе данных, которая находится в Microsoft SQL Server 2008. Я просмотрел различные учебные пособия, страницы, страницы справки и страницы с вопросами, но так и не смог заставить это работать.

Я использую:

  • Ubuntu Karmic
  • Рельсы 2.3.5
  • Рубин 1.8.7
  • activerecord-odbc-adapter 2.0
  • activerecord-sqlserver-adapter 2.3
  • дБд-одбц 0,2,5
  • дБи 0,4,3

Я также установил:

  • freeTDS 0.82-6
  • tdsodbc 0,82-6
  • sqsh 2.1-8build1
  • libodbc-ruby1.8 0.9997-2 (также пробовал с 0.9995 и 0.9998)
  • unixodbc 2.2.11-16ubuntu1

Мне удалось подключиться к базе данных с помощью tsql, sqsh и isql. Но не могу подключить его ни через IRB, ни через рельсы. Всякий раз, когда я пытаюсь, я получаю следующую ошибку:

DBI::DatabaseError: **INTERN (0) [RubyODBC]Cannot allocate SQLHENV**
 from /var/lib/gems/1.8/gems/dbd-odbc-0.2.5/lib/dbd/odbc/driver.rb:36:in `connect'
 from /usr/lib/ruby/1.8/dbi/handles/driver.rb:33:in `connect'
 from /usr/lib/ruby/1.8/dbi.rb:142:in `connect'
 from (irb):4

Не имеет значения, использую ли я odbc-адаптер или sql-адаптер, потому что он всегда дает сбой в драйвере dbi. Есть идеи, что может быть не так?

У меня правильно определены файлы odbc.ini, odbcinst.ini и freetds.conf. И они работают со всеми другими командами для подключения (isql, tsql, sqsh).

Пожалуйста, помогите мне или укажите мне где-нибудь, что может помочь мне! =)

PS: Я уже просмотрел следующие страницы без особого успеха (среди прочих):

  • wiki.rubyonrails.org / база-поддержка / MS-SQL? С [] = & SQL с [] = Сервер * * тысяча сорок семь
  • piao-tech.blogspot.com / 2008/02 / с использованием-ActiveRecord-с-майкрософт-sql.html
  • lambie.org / 2008/02/28 / подключение к ан-MSSQL-базы данных из-рубин-на-убунту /
  • stackoverflow.com / вопросы / 1419397 / rubyodbc-не-ассигновать-sqlhenv

Ответы [ 2 ]

1 голос
/ 20 января 2010

Эта страница , кажется, предполагает, что проблема может быть связана с невозможностью найти общую библиотеку. Вы должны убедиться, что система может найти любые библиотеки, которые могут ей понадобиться, проверив вывод ldconfig -v и убедившись, что папки, содержащие libodbc, libodbcinst и libtdsodbc, включены в путь поиска библиотеки. Если вы не уверены, как это сделать, эта ссылка может помочь.

Если это не удастся, то соберите камень вручную, используя следующую строку

ruby extconf.rb --with-odbc-dir=/folder/to/unixodbc --disable-dlopen

Я не могу поклясться, что это правильный ответ, но это может помочь. У меня есть freetds и SQL Server, которые вполне успешно работают с rails на Centos

0 голосов
/ 20 января 2010

Если вы можете переключиться на JRuby ( jruby.org ), вы можете попробовать использовать гем active-record-jdbc с драйвером JDBC сервера MS SQL.Я использую их для подключения к базе данных MS SQL Server 2005 из Ruby, и она работает как шарм.

Надеюсь, это поможет!

...