【问题标题】:Ruby mysql gem errorRuby mysql gem 错误
【发布时间】:2012-06-16 06:46:27
【问题描述】:

我已经安装了 mysql gem,但是遇到了第一个障碍:

 initialize': wrong number of arguments(4 for 0) (ArgumentError)
 from open.rb:14:in `new' 
 from open.rb:14:in `<main>'

是这段代码的结果:

 require 'mysql'

 db = Mysql.new('localhost','root','','test')
 puts db

我正在关注本教程中的代码:

http://rubylearning.com/satishtalim/ruby_mysql_tutorial.html

看起来新方法不接受 4 个参数。我不知道为什么。 mysql.new 创建一个新对象就好了。

【问题讨论】:

  • 抱歉,刚刚删除了那个#。当我得到错误时,它不存在。似乎新方法对 4 个参数不满意。
  • 让我猜猜:您使用的是 Mac OS X Leopard(或 Lion),对吧? ) 如果是这样,请查看this article,它应该对您有所帮助。 )
  • 我在山狮 (10.7)。刚刚尝试了该修复,但不幸的是我仍然收到该错误:(

标签: mysql ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

使用 Mysql2 gem:

gem install mysql2

然后:

require 'mysql2'
client = Mysql2::Client.new(:host => "localhost", :username => "root")
results = client.query("show databases")
results.each do |row|
  puts row["Database"]
end

您可以在gem documentation找到更多信息

HTH!

【讨论】:

  • 刚刚尝试 mysql2 但现在我得到:'`require': dlopen(/Users/richardjburton/.rvm/gems/ruby-1.9.3-p0/gems/mysql2-0.3.11/ lib/mysql2/mysql2.bundle, 9): 库未加载: libmysqlclient.18.dylib (LoadError)'
  • 解决了!使用 mysql2,你的代码和这个小技巧。谢谢! rorguide.blogspot.co.uk/2011/07/…
  • 酷!感谢您分享该提示。我相信它也会对其他人有所帮助。
【解决方案2】:

第 14 行是您声明 db = Mysql.new('localhost','root','','test') 的行吗?

我刚刚打开 irb,安装了 gem,复制了你的行,它工作得很好——它按预期返回了一个 Mysql 对象。

你可以尝试通过irb 做同样的事情吗?顺便说一句,我建议您安装 mysql2 gem。这里解释一下原因:What the difference between mysql and mysql2 gem

【讨论】:

  • 1.9.3-p0 :002 > 要求 'mysql' => true 1.9.3-p0 :003 > Mysql.new('localhost', 'user', 'pass', 'db' ) ArgumentError: 来自 (irb):3:in initialize' from (irb):3:in new' 来自 (irb):3 来自 /Users/richardjburton/.rvm/rubies/ruby-1.9.3-p0/ 的参数数量错误(4 代表 0) bin/irb:16:in `
    '
  • 遗憾的是,我在 irb 中遇到了同样的错误。它只是不接受 4 个参数。感谢您花时间尝试!你的设置是什么?我正在运行 OS X Mountain Lion
  • 我也在 Lion 上。但是,我的 Ruby 版本是 1.9.2。您可以尝试使用 gem mysql2 代替吗?你可以在这里找到它的文档:rubydoc.info/gems/mysql2/0.2.3/frames
  • 是的,我现在正在尝试 mysql2 gem,但出现新错误:`require': dlopen(/Users/richardjburton/.rvm/gems/ruby-1.9.3-p0/gems/mysql2 -0.3.11/lib/mysq‌​l2/mysql2.bundle, 9):库未加载:libmysqlclient.18.dylib (LoadError)'
  • 解决了! sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 来自:rorguide.blogspot.co.uk/2011/07/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 2013-09-15
相关资源
最近更新 更多