2009-09-15 63 views
5

我在Ruby中遇到MySQL查询问题。我使用'mysql'宝石。使用Ruby进行多个MySQL查询

配置存储在一个单独的yml文件中,并加载到@conf变量中。 这是我的代码:

# 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
红宝石1.8.6(2008-08-11 PATCHLEVEL 287)[I386-mswin32]
的MySQL(2.8.1,2.7.3)
的MySQL客户端版本:5.0.51a

第二个查询将引发'查询:未连接'。

回答

7

首先,你的程序看起来不错。我100%确定你有libmysql.dll版本问题。

我可以通过从Mysql安装程序提供的libmysql.dll重现此操作。

下载该文件,并在C替换:\红宝石\ BIN \

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

,并没有任何变化重新运行程序。

相关的问题和信贷here

+0

太棒了!谢谢! 我以前有过libmysql问题,但是从我的Mysql安装中复制它 - 而不是从rubyforge。有用! YEA! – Andrew 2009-09-15 19:54:49

+0

谢谢Jirapong。只是为了澄清这个问题,一个5.0.x库会起作用。我在ruby/bin中使用5.1.42服务器和5.0.4 libmysql.dll。 – Sixty4Bit 2010-04-05 18:12:50

+0

谢谢!我一整天都在尝试一些不同的ORM包装,最后放弃直接使用Ruby Mysql,并遇到同样的问题。原来也是我的错误版本,这个解决了它:-) – Mika 2011-02-11 15:25:36

0

我试图在任何版本的Windows上使用Ruby的mysql gem时遇到无法测量的问题。从我所知道的情况来看,除非你能弄清楚如何自己编译它(这是屁股的皇家痛苦),否则它根本行不通。

您是否考虑过使用ActiveRecord作为您的ORM(对象关系映射)层,并使用SQLite或Windows上的其他数据库进行开发,然后使用MySQL在Linux上运行生产环境?这是我花了一段时间回来的解决方案,结果非常好。

+0

的主要问题是该数据库已经完成并运行。 我正在为这个基地写一个小工具。 我只需要执行数据库查询。 有没有其他方法可以做到这一点? – Andrew 2009-09-15 16:11:03