被 in `query’: query: not connected (Mysql::Error)这个问题困扰好久了,先附上我的代码
- require 'rubygems'
- require 'mysql'
- conn = Mysql.real_connect('192.168.87.126','admin','password','test')
- conn.query('set names utf8')
- File.open("old_content_id.txt") do |file|
- while content_id = file.gets
- res = conn.query('select * from content where content_id = '+content_id.strip.to_s)
- res.each do |row|
- puts row[2]
- end
- end
- end
乍一看,代码没有什么问题,可是执行的时候偏偏会报in `query’: query: not connected (Mysql::Error)的错误,无奈之下,我把conn = Mysql.real_connect(‘192.168.87.126′,’admin’,’password’,’test’)放到了for循环的里 面,这样做的后果就是每次循环都会创建一个连接,导致连接数过多。(PS:加上了关闭连接的语句也不会起作用,因为基本是这边发送了关闭的请 求,mysql从接到请求到关闭完成还是需要一段时间的,连接照样不会及时释放掉。)
一直觉得ruby不至于做的这么差劲,以为是代码有问题,可是同样的方法连接oracle完全没有问题,简直是无奈至极。
千算万算没有算到又是libmysql.dll的问题,从http://instantrails.rubyforge.org/svn /trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll 下载了个旧版本的libmysql.dll文件之后,问题竟然解决了。
原因是:新版本的mysql的一些相关接口变化了,ruby的mysql接口还没跟上,所以下载个旧版本的就好用了
汗~~