ruby:单个查询后关闭mysql的连接

时间:2012-05-16 13:00:09

标签: mysql ruby

我正在编写一个包含多个选择查询的ruby脚本。 在脚本的开头我正在初始化一个新的数据库连接:

db = Mysql.new 'localhost', 'root', 'pass', 'mydb', 3308

第一个选择查询成功,但当它到达第二个时,会发生以下错误:

中的

:查询:未连接(Mysql :: Error)

我可以通过在每次查询之前复制连接初始化行来解决这个问题,但我真的不认为这是正确的解决方案。

谢谢, 李

添加我的完整脚本(我是新手,对于悲惨的风格抱歉): (用更简单的repro替换原始脚本): 在下面的代码中,如果我注释掉“SELECT”查询并只留下“INSERT INTO”查询,那么一切都很好。但是,如果我尝试按原样运行代码,我会收到上述错误。

#!/usr/local/bin/ruby -w 

require "mysql"

dbname = "sample_db"

m = Mysql.new 'localhost', 'root', 'passw', 'sample_db', 3306

m.select_db(dbname)

m.query("CREATE TABLE words         
     (          
       german varchar(30),          
       english varchar(30),          
       french varchar(30)         
     )"        
   )

m.query("INSERT INTO words VALUES('Adler', 'eagle', 'aigle')")

results = m.query("SELECT german, english FROM words")

m.query("INSERT INTO words VALUES('Haus', 'house', 'maison')")

m.close

1 个答案:

答案 0 :(得分:1)

找到答案:

http://halyph.blogspot.com/2009/08/rails-23-migration-issues-with-mysql_26.html

似乎这是一个常见问题,我只需要将libmysql.dll替换为: http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll

然后重新启动我的mysql服务。 请注意,我已经替换了我的dll(在安装问题之后),但只有rubyforge的dll似乎已经解决了这个问题

请注意,此问题的另一个症状是零星的分段错误。更换dll后,这些也消失了