2009-09-15 9 views
5

Mam problemy z zapytaniami MySQL w Ruby. Używam klejnotu mysql.Wiele zapytań MySQL z Ruby

Konfiguracja jest przechowywana w oddzielnym pliku yml i ładowana do zmiennej @conf. To jest mój kod:

# connect to the database 
Mysql::new(@conf['sql_host'], @conf['sql_user'], @conf['sql_password'], @conf['sql_base']) 

# it's ok when we're doing this 
my.query("SELECT * FROM `my_table`") do |e| 
    # code 
end 

# Maybe, I've missed something here... 

# really this query will insert value into other table, used SELECT just for testing 
# this throws exception: 'query: not connected' 
my.query("SELECT * FROM `my_table_2`") 

Windows XP
Ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]
mysql (2.8.1, 2.7.3)
MySQL Wersja klienta: 5.0.51a

Druga kwerenda wyrzuca zapytanie: brak połączenia.

Odpowiedz

7

Po pierwsze, Twój program wygląda dobrze. Jestem w 100% pewien, że masz problem z libmysql.dll.

Mogę odtworzyć to za pomocą libmysql.dll z instalatora Mysql.

Pobierz ten plik i zastąpić w katalogu c: \ ruby ​​\ bin \

http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll

i ponownie uruchomić program bez żadnych zmian.

Powiązane problem i kredyt do here

+0

Świetnie! Dzięki! Miałem problemy z libmysql wcześniej, ale skopiowałem je z mojej instalacji Mysql - nie z rubyforge. To działa! TAK! – Andrew

+0

Dzięki Jirapong. Aby wyjaśnić poprawkę, działa biblioteka 5.0.x. Używam serwera 5.1.42 i pliku libmysql.dll w wersji 5.0.4 w ruby ​​/ bin. – Sixty4Bit

+0

DZIĘKUJEMY! Próbowałem cały dzień z różnymi opakowaniami ORM i ostatecznie zrezygnowałem z bezpośredniego używania Ruby Mysql i wpadłem na ten sam problem. Okazało się, że była to zła wersja również dla mnie, ta rozwiązała :-) – Mika

0

mam napotkasz niemierzalnych problemy podczas próby użycia Ruby mysql klejnot na każdej wersji systemu Windows. Z tego, co mogę powiedzieć, to po prostu nie działa, chyba że potrafisz sam wymyślić, jak go skompilować (co jest królewskim bólem w tyłku).

Czy rozważałeś użycie ActiveRecord jako warstwy ORM (mapowanie relacyjne obiektów) i rozwijasz z SQLite lub inną bazą danych w systemie Windows, a następnie uruchamiasz środowisko produkcyjne w systemie Linux z MySQL? To jest rozwiązanie, które wziąłem jakiś czas temu i całkiem dobrze.

+0

Głównym problemem jest to, że baza danych jest już zrobione i działa. Piszę małe narzędzie dla tej bazy. Po prostu trzeba wykonać kwerendy bazy danych. Czy jest jakiś inny sposób na zrobienie tego? – Andrew