【问题标题】:Vanilla MySQL access from Ruby 1.9 on Snow Leopard在 Snow Leopard 上从 Ruby 1.9 访问 Vanilla MySQL
【发布时间】:2010-09-08 01:47:10
【问题描述】:

我在 Slow Leopard(通过 MacPorts 安装)上运行 Ruby 1.9(ruby 1.9.1p376(2009-12-07 修订版 26041)[i386-darwin10])。

然后我通过 MacPorts 安装了 Ruby MySQL 客户端库: 安装 rb19-mysql

尝试使用它我得到以下错误:

db.rb:4:in `initialize': 参数数量错误(4 代表 0)(ArgumentError) 来自 db.rb:4:in `new' 来自 db.rb:4:in `'

我的代码:

require 'mysql'
require 'pp'

dbh = Mysql.new("localhost", "testuser", "testpass", "test")
puts "Server version: " + dbh.get_server_info

似乎我在这里遗漏了一些非常基本的东西。

我是否安装了正确的客户端库? 我使用正确吗? 我是否缺少其他一些依赖项?

如果有人能指出我正确的方向,将不胜感激。

谢谢!

【问题讨论】:

  • “Slow Leopard”是 OS X 内部的玩笑还是错字?如果是错字,是弗洛伊德的错字吗? :)
  • Slow err Snow Leopard 对我来说已经足够快了.. 确实是错字:)
  • 但它可能会比 Win XP 慢...

标签: mysql ruby


【解决方案1】:

您正在寻找的是:

dbh = Mysql.real_connect("localhost", "testuser", "testpass", "test")

【讨论】:

    【解决方案2】:

    我这辈子从来没有写过一行Ruby,所以也许我会为难自己,但你不是必须先初始化Mysql吗?我很确定该函数需要 0 个参数这一事实意味着它还不存在。

    在你提到的包的测试文件中(你让我很好奇),我看到以下行:

     assert_nothing_raised{@m = Mysql.init} 
    

    但是,您的语法似乎是正确的。来自同一个测试文件

    assert_nothing_raised{@m = Mysql.new(@host, @user, @pass, @db, @port, @sock, @flag)}
    

    我假设你需要先做一个Mysql.init()

    如果我错了,请告诉我,我会删除答案。

    【讨论】:

    • 不走运。 db.rb:4:in <main>': undefined method init' for Mysql:Class (NoMethodError) Mysql.init()
    • 那么你可能安装了错误的包。或者您需要以某种我不知道的方式初始化或加载该类。太糟糕了!
    【解决方案3】:

    您的代码对我来说看起来很可靠;它与 rb19-mysql 主页上给出的示例非常匹配。

    my = Mysql.new(hostname, username, password, databasename)
    st = my.prepare("insert into tblname (col1,col2,col3) values (?,?,?)")
    st.execute("abc",123,Time.now)
    st.prepare("select col1,col2,col3 from tblname")
    st.execute
    st.fetch  # => ["abc", 123, #<Mysql::Time:2005-07-24 23:52:55>]
    st.close
    

    这似乎表明端口安装可能有些地方不太对劲。雪豹升级后 MacPorts 出现各种问题 - 您是否成为此问题的受害者?我必须重建所有端口才能正常工作。

    另外(我知道这对某些人来说就像宗教一样),您可能想要考虑放弃 MacPort 版本,而只使用 MySql gem。无论出于何种原因,使用宝石对我来说都是一种更愉快的体验。

    希望有所帮助 - 祝你好运!

    【讨论】:

      猜你喜欢
      • 2010-11-24
      • 2011-06-12
      • 2010-11-24
      • 2011-01-08
      • 1970-01-01
      • 2023-03-10
      • 2010-11-24
      • 2010-11-25
      • 1970-01-01
      相关资源
      最近更新 更多