2010-01-17 165 views
5

我在Slow Leopard(通過MacPorts安裝)上運行Ruby 1.9(ruby 1.9.1p376(2009-12-07 revision 26041)[i386-darwin10])。香草從雪豹MySQL 1.9上訪問雪豹

我然後安裝通過MacPorts的Ruby的MySQL客戶端庫: 安裝RB19-mysql的

嘗試使用它,我得到以下錯誤:

 
db.rb:4:in `initialize': wrong number of arguments(4 for 0) (ArgumentError) 
    from db.rb:4:in `new' 
    from db.rb:4:in `' 

我的代碼:

require 'mysql' 
require 'pp' 

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

看來我很想念這裏非常基本的東西。

我安裝了正確的客戶端庫嗎? 我正確使用它? 我是否缺少一些其他的依賴關係?

如果有人能指出我正確的方向,將不勝感激。

謝謝!

+4

「Slow Leopard」是一個OS X內部的笑話,還是一個錯字?如果這是一個錯字,它是弗洛伊德語的嗎? :) – 2010-01-17 13:02:10

+0

慢err雪豹對我來說足夠快..錯別字:) – deepakg 2010-01-17 15:48:05

+0

但它可以比Win XP慢... – Jaryl 2010-06-27 19:27:25

回答

0

我從來沒有在我的生活中寫過一行紅寶石,所以也許我會讓自己難堪,但是你不需要首先初始化Mysql?我很確定函數期望0參數的事實意味着它還不存在。

在你所提到的包的測試文件(你讓我好奇),我看到了下面一行:

assert_nothing_raised{@m = Mysql.init} 

你的語法似乎是正確的,但是。從相同的測試文件

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

我假設你需要先做一個Mysql.init()

如果我錯了,讓我知道,我會刪除答案。

+0

沒有運氣。 db。rb:4:在'

'中:未定義的方法init用於Mysql:Class(NoMethodError) Mysql.init() – deepakg 2010-01-17 15:47:07

+0

然後,您可能安裝了錯誤的軟件包。或者您需要以某種我不知道的方式初始化或加載該類。太糟糕了! – 2010-01-17 16:01:13

1

什麼你要找的是:

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

你的代碼看起來固體給我;它與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的寶石。無論出於何種原因,使用寶石對我來說都是一種更加愉快的體驗。

希望有所幫助 - 祝你好運!