2009-09-14 18 views
5

Sto provando a connettermi a SQL Server su Ubuntu 9.04 utilizzando Ruby. Ho tradotto e seguito tutte le procedure descritte per ottenere OSX parlare a SQL Server da qui:RubyODBC Impossibile allocare SQLHENV

http://toolmantim.com/articles/getting_rails_talking_to_sqlserver_on_osx_via_odbc

Tutto sta lavorando alla FreeTDS e fine unixODBC. Posso vedere e interrogare il database usando tsql.

Quando provo ad accedere al database da Ruby utilizzando IRB ottengo il seguente errore:

DBI :: DatabaseError: INTERN (0) [RubyODBC] non può allocare SQLHENV

Chiunque ha funzionato in questo e cosa posso fare per risolvere questo?

risposta

0

Go fig che ho effettivamente ottenuto questo lavoro dopo aver inviato la mia domanda. Quello che ho finito è stato disinstallare libdbd-odbc-ruby e libdbi-ruby e quindi reinstallarli installando libdbi-ruby prima e installando libdbd-odbc-ruby. Immagino che quando li ho installati prima, qualcosa deve incasinato.

5

Ho iniziato a ricevere questo errore quando ho aggiornato a Ubuntu 9.10 (Karmic Koala). Il tuo consiglio sull'ordine di installazione dei pacchetti di Ubuntu non ha funzionato per me.

Sembra che la soluzione fosse compilare manualmente 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

Grazie, che finalmente risolve i problemi che ho avuto. Deve essere un bug specifico per Karmic. –

+0

Questo ha risolto il mio problema anche ... DIO !! Grazie!! – mickey

+0

Volevo aggiungere che tutto sembra funzionare quando si utilizza Ruby Enterprise Edition. Le normali installazioni di installazione di gem funzionano a partire da REE 1.8.7-2010.01 –

0

BTW, seguendo le istruzioni per ricompilare Ruby-ODBC su Ubuntu 9.10 (Karmic) necessaria l'installazione sia del libiodbc2-dev o il pacchetto unixODBC-dev. Quando si utilizza libiodbc2-dev, ho ottenuto gli errori di segmentazione quando il mio programma in Ruby ha provato:

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

..ma non è un problema quando si utilizza unixodbc-dev, invece.

0

La soluzione di Tim Morgan non ha funzionato per me. Comunque sono riuscito a far funzionare le cose con l'installazione di una versione precedente di libodbc-ruby (0.9995) da qui:

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

Ulteriori dettagli sono disponibili dal blog di Carsten Gehling:

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

Attenzione però: il Gestore degli aggiornamenti di Ubuntu "aggiornerà" felicemente questa versione di libodbc-ruby allo 0.9997-2 non funzionante. Ho accidentalmente sovrascritto la versione precedente in questo modo solo per finire qui, cercando di capire come l'ho riparato l'ultima volta.

0

Bene, sembra che l'altra risposta abbia smesso di funzionare per me. This thread mi ha aiutato a risolvere il problema in un altro modo, e volevo condividerlo qui.

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 

Se non si è su una piattaforma a 64 bit, è necessario scaricare un diverso pacchetto Debian.

Fondamentalmente, ciò che risolve il problema è l'installazione della versione 0.9995 del pacchetto Ubuntu ruby-odbc.

2

Sistema

Ubuntu 9.10 a 64 bit

ho dovuto specificare la directory ODBC nel rubyodbc installare

 
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

ho avuto lo stesso problema.

Ma su CentOS 5.5 non Ubuntu

provato molte forum/soluzioni con nessuna gioia.

Il messaggio di errore indica un riferimento mancante a unixODBC. Quale era l'impostazione utilizzando la variabile LD_LIBRARY_PATH. Trovato un altro modo per impostare il percorso, creando
/etc/ld.so.conf.d/odbc.conf. aggiungi la posizione unixODBC al file, ad es./Usr/local/lib. Esegui, sudo ldconfig.

Problemi correlati