2009-09-14 9 views
5

J'essaie de me connecter à SQL Server sur Ubuntu 9.04 en utilisant Ruby. Je traduis et suivi toutes les étapes décrites à obtenir OSX parler à SQL Server à partir d'ici:RubyODBC Impossible d'allouer SQLHENV

http://toolmantim.com/articles/getting_rails_talking_to_sqlserver_on_osx_via_odbc

Tout fonctionne sur les FreeTDS et fin unixODBC. Je peux voir et interroger la base de données en utilisant tsql.

Lorsque je tente d'accéder à la base de données de Ruby à l'aide de la CISR je reçois l'erreur suivante:

DBI :: DatabaseError: STAGIAIRE (0) [RubyODBC] Impossible d'allouer SQLHENV

Quelqu'un at-il rencontré ce et que puis-je faire pour résoudre cela?

Répondre

0

Allez la figue que j'ai vraiment eu ce travail après avoir soumis ma question. Ce que j'ai fini par faire était de désinstaller libdbd-odbc-ruby et libdbi-ruby puis de les réinstaller en installant d'abord libdbi-ruby puis en installant libdbd-odbc-ruby. Je suppose que quand je les ai installés avant, quelque chose doit être foiré.

5

J'ai commencé à recevoir cette erreur lors de la mise à niveau vers Ubuntu 9.10 (Karmic Koala). Votre conseil concernant l'ordre d'installation des paquets Ubuntu n'a pas fonctionné pour moi.

Il semble que la solution consistait à compiler manuellement 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

Merci, cela résout finalement les problèmes que j'ai eu. Doit être un bug spécifique à Karmic. –

+0

Cela a résolu mon problème aussi ... DIEU !! Merci!! – mickey

+0

Je voulais ajouter que tout semble fonctionner lorsque vous utilisez Ruby Enterprise Edition. L'installation régulière d'Ol 'gem fonctionne à partir de REE 1.8.7-2010.01 –

0

BTW, en suivant les instructions pour recompiler Ruby-ODBC sur Ubuntu 9.10 (Karmic) nécessaire l'installation soit du libiodbc2-dev ou le paquet unixodbc-dev. Lors de l'utilisation libiodbc2-dev, je suis une erreur de segmentation quand mon programme Ruby a essayé:

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

..mais pas de problème lors de l'utilisation à la place unixodbc-dev.

0

La solution de Tim Morgan n'a pas fonctionné pour moi. Cependant, j'ai pu faire avancer les choses de travail en installant une version plus ancienne de libodbc-rubis (0,9995) d'ici:

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

Des détails supplémentaires sont disponibles sur le blog de Carsten Gehling:

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

Attention toutefois: le gestionnaire de mise à jour d'Ubuntu mettra volontiers à jour cette version de libodbc-ruby vers la 0.9997-2 cassée. J'ai accidentellement écrasé l'ancienne version de cette façon pour finir ici, essayant de comprendre comment je l'ai réparé la dernière fois.

0

Eh bien, il semble que mon autre réponse a cessé de fonctionner pour moi. This thread m'a aidé à résoudre le problème d'une autre manière, et je voulais le partager ici.

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 

Si vous n'êtes pas sur une plate-forme 64 bits, vous devez télécharger un autre paquet Debian. Fondamentalement, ce qui résout le problème est l'installation de la version 0.9995 du paquet Ubuntu de ruby-odbc.

2

Système

Ubuntu 9.10 64 bits

je devais spécifier le répertoire odbc dans le rubyodbc installer

 
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

j'ai eu le même problème.

Mais sur CentOS 5.5 n'Ubuntu

Essayé de nombreux forums/solutions sans joie.

Le message d'erreur indique une référence manquante à unixODBC. Paramètre utilisant la variable LD_LIBRARY_PATH. Une autre façon de définir le chemin a été trouvée en créant
/etc/ld.so.conf.d/odbc.conf. ajouter l'emplacement unixODBC dans le fichier ie/usr/local/lib. Exécuter, sudo ldconfig.