2009-09-15 17 views
5

Tengo problemas con las consultas MySQL en Ruby. Yo uso la gema 'mysql'.Múltiples consultas MySQL con Ruby

La configuración se almacena en un archivo yml separado y se carga en la variable @conf. Este es mi código:

# 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
rubí 1.8.6 (2008-08-11 Patchlevel 287) [i386-mswin32]
MySQL (2.8.1, 2.7.3)
MySQL versión del cliente: 5.0.51a

La segunda consulta arroja 'consulta: no conectada'.

Respuesta

7

Antes que nada, su programa se ve bien. Estoy 100% seguro de que tienes un problema con la versión de libmysql.dll.

Puedo reproducir esto con libmysql.dll proporcionado desde el instalador de Mysql.

Descargar este archivo y vuelva a colocar en c: \ ruby ​​\ bin \

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

y volver a ejecutar el programa sin ningún cambio.

cuestión relacionada y el crédito a here

+0

¡Genial! ¡Gracias! Tuve problemas con libmysql anteriormente, pero lo copié de mi instalación de Mysql, no de rubyforge. ¡Funciona! ¡SÍ! – Andrew

+0

Gracias Jirapong. Solo para aclarar la solución, una biblioteca 5.0.x funcionará. Estoy utilizando el servidor 5.1.42 y el 5.0.4 libmysql.dll en ruby ​​/ bin. – Sixty4Bit

+0

¡GRACIAS! He intentado todo el día con algunos envoltorios diferentes de ORM y finalmente renuncié para usar Ruby Mysql directamente, y me encontré con el mismo problema. Resultó ser la versión incorrecta para mí también, esta lo resolvió :-) – Mika

0

Me he encontrado con problemas inconmensurables al intentar usar la gema mysql de Ruby en cualquier versión de Windows. Por lo que puedo decir, simplemente no funciona a menos que puedas averiguar cómo compilarlo tú mismo (que es un dolor real en el culo).

¿Ha considerado usar ActiveRecord como su capa ORM (asignación relacional de objetos) y hacer desarrollo con SQLite u otra base de datos en Windows y luego ejecutar el entorno de producción en Linux con MySQL? Esta es la solución que tomé hace un tiempo y funcionó bastante bien.

+0

El problema principal es que la base de datos ya está hecho y funcionando. Estoy escribiendo una pequeña herramienta para esta base. Solo necesito ejecutar consultas en la base de datos. ¿Hay alguna otra manera de hacer esto? – Andrew

Cuestiones relacionadas