2009-08-27 112 views
28

我有一个Ruby on Rails项目,我是一个托管服务器上开发,但已经决定与我的本地Windows机器上工作。Ruby on Rails的连接问题

要开始我想我会确保我可以把我的模型从旧的项目,并把它们放到一个新的项目,然后在控制台对它们进行查询。这失败了。

编辑以反映更准确的问题: rails建立以查询我的模型的连接只能运行一个查询,然后为所有后续查询提供“未连接​​”异常。任何人都知道发生了什么事?我检查了我的配置,很多。如果在MySQL服务器上有一些我不知道的信息,我愿意看看。

堆栈跟踪:

Price.find(1) 
ActiveRecord::StatementInvalid: Mysql::Error: query: not connected: SHOW FIELDS FROM `prices` 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/abstract_adapter.rb:212:in `log' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/mysql_adapter.rb:320:in `execute' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/mysql_adapter.rb:466:in `columns' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:1271:in `columns' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:1279:in `columns_hash' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:1578:in `find_one' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:1569:in `find_from_ids' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:616:in `find' 
     from (irb):2 

我核实,我的MySQL数据库正在接受连接,并且具有我所期望的数据和结构。我已经仔细检查了我的连接等。任何人都可以点亮灯光吗?

+0

你在督促,开发或测试运行?如果你改变这个,会发生什么? – marcgg 2009-08-27 20:23:07

+0

可连接,查询失败 >>需要 “的MySQL” => [] >> testconn = Mysql.real_connect( “本地主机”, “lco_admin”, “****”, “lastcall_dev”) =># >> testconn.get_server_info => “5.1.37社区” >> testconn.host_info => >> testconn.list_tables => [ “bar_schedules” “通过TCP/IP本地主机” , “酒吧”, “bars_features”, “饮料”, “功能”, “价格”, “复发”, “special_schedules”, “特价”, “时间跨度”] >> testconn.query( “SELECT * FROM价格” ) Mysql的::错误:查询:7::未从(IRB)连接 在'查询” ˚F rom(irb):7 – marr75 2009-08-27 20:30:25

+0

我遇到了与您@ marr75完全相同的问题。如果我能解决这个问题,我一定会发布到这里! – jonsidnell 2009-08-28 00:39:57

回答

82

我发现在aptana forum解决这个问题。

那里说的是MySQL 5.1客户端库在Rails 2.2中不能很好地发挥作用 他们提供的解决方案很简单:下载一个旧的MySQL客户端库(libmySQL.dll)并将其复制到您的Ruby \ bin文件夹中。

这为我工作(Windows XP中,红宝石1.8.6,2.3.3的Rails和MySQL 5.1.33)

+0

甜!为我工作:) – jonsidnell 2009-08-29 15:56:01

+2

非常感谢。令人失望的是,在许多地方,mysql和ruby项目相互链接,包括一步一步地指导如何让这个堆栈在windows上工作,这个项目还没有被提及。 – marr75 2009-08-31 13:45:19

+3

哇,很高兴我找到了这篇文章!现在效果很好,谢谢你的提示! – 2009-09-25 23:11:10

3

检查是否有最新的MySQL宝石(钢轨> 2.1.2)

验证你的config/database.yml文件(适配器,密码)。检查是否设置正确所有的环境(开发,测试PROD)

确认你的MySQL运行

+0

几次检查宝石,实际上检查了我所有的宝石。我知道数据库配置是正确的,因为如果我有意破坏它,我不再能够获得有关我的配置的信息(一个或多个服务器信息 - ish查询失败)。出于同样的原因,我知道它可以与Mysql进行通信,并且mysql正在运行(如果我停用该服务,则不能再从欢迎页面中看到有关我的配置的信息)。 – marr75 2009-08-28 15:58:54

1

下载一个较旧的MySQL客户端库

+0

答案已经发布。谢谢你。 – marr75 2010-11-02 05:08:04