Ruby on rails连接问题

时间:2009-08-27 20:07:32

标签: mysql ruby-on-rails activerecord

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

要开始,我想我会确保我可以从旧项目中取出我的模型并将它们放入一个新项目中,然后在控制台中查询它们。这失败了。

编辑以反映更准确的问题: 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数据库正在接受连接并且具有我期望的数据和结构。我已经仔细检查了我的连接等等。任何人都可以解决一些问题吗?

3 个答案:

答案 0 :(得分:82)

我在aptana forum中找到了解决此问题的方法。

在那里它说MySQL 5.1客户端库与Rails 2.2不兼容 他们提供的解决方案很简单:下载一个较旧的MySQL客户端库(libmySQL.dll)并将其复制到您的Ruby \ bin文件夹。

这对我有用(Windows XP,Ruby 1.8.6,Rails 2.3.3,mysql 5.1.33)

答案 1 :(得分:3)

检查您是否拥有最新的mysql gem(对于rails> 2.1.2)

验证您的config / database.yml文件(适配器,密码)。检查是否为所有环境(dev,prod test)正确设置了

验证您的mysql是否正在运行

答案 2 :(得分:1)

下载较旧的MySQL客户端库