【问题标题】:Ruby on rails connection problemRuby on rails 连接问题
【发布时间】:2009-08-27 20:07:31
【问题描述】:

我有一个在托管服务器上开发的 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 数据库正在接受连接并且具有我期望的数据和结构。我已经仔细检查了我的连接等。有人能解释一下吗?

【问题讨论】:

  • 您是在生产、开发还是测试中运行?如果你改变它会发生什么?
  • 可以连接,查询失败>> require "mysql" => [] >> testconn = Mysql.real_connect("localhost", "lco_admin", "****", "lastcall_dev") => #<0x348d728>

标签: mysql ruby-on-rails activerecord


【解决方案1】:

我在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)

【讨论】:

  • 非常感谢。令人失望的是,在 mysql 和 ruby​​ 项目相互链接的许多地方,包括如何让这个堆栈在 windows 上工作的分步指南,都没有提到这个项目。
  • 哇,很高兴我找到了这篇文章!现在效果很好,感谢您的提示!
  • 非常感谢您的节省时间!
  • 谢谢你......我以为我在从 linux 主机迁移到本地 windows 演示服务器时遇到了真正的麻烦......
  • 再次投票。每次我尝试运行 rake db:migrate 时都会遇到不同的错误。连接左右的分段错误和错误。我需要几个小时才能弄清楚这一点。相反,它花了 5 分钟,链接到 .dll 文件。
【解决方案2】:

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

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

验证你的 mysql 是否正在运行

【讨论】:

  • 检查了几次gem,实际上检查了我所有的gem。我知道数据库配置是正确的,因为如果我故意破坏它,我将无法再获得有关我的配置的信息(一个或多个服务器信息查询失败)。出于同样的原因,我知道它可以与 Mysql 通信,并且 mysql 正在运行(如果我停用该服务,我将无法再从欢迎页面看到有关我的配置的信息)。
【解决方案3】:

下载旧版 MySQL 客户端库

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2011-05-10
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多