我正在编写一个包含多个选择查询的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
答案 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后,这些也消失了