2011-06-27 12 views
0

我想做一些簡單的統計數據,我從數據庫中提取數據,但是每當我執行mysql命令時,我所得到的就是mysql的使用清單。令我困惑的是這個命令是從命令行運行的,但不是在我的ruby腳本中。從一個紅寶石程序調用mysql

命令:

query = 'select * from builds;' 
results = `mysql -h <hostname> -u root -D build -e #{query}` 
print results 

我希望看到該表中的一切,但我所得到的是這樣的:

的MySQL版本14.12 DISTRIB 5.0.37,爲 的Win32(IA32)版權所有(C)2002 MySQL AB該軟件附帶ABSOLUTELY 無擔保。這是免費軟件, ,歡迎您修改, 根據GPL許可證重新發布它 用法:mysql [選項] [數據庫]
- ?, --help顯示此幫助並退出。 -I,--help
- ?的同義詞? --auto-rehash
啓用自動重新哈希。一個 不需要使用 'rehash'來獲取表和字段完成,但 啓動 並重新連接可能需要較長的時間。通過 禁用 - 禁用自動重新刷新。 -A,--no-auto-rehash 不自動重新哈希。一個必須使用'rehash'來 得到 表和字段完成。這可以更快地啓動 的 mysql並禁用重新連接重新連接。 警告: 選項已棄用;改用--disable-auto-rehash 。 -B, - 批量不要 使用歷史記錄文件。禁用交互式 行爲。

...等

任何幫助將是巨大的。 謝謝。

回答

1

我強烈推薦使用mysql gem for ruby。它允許你本地操作,而不是包裝命令行。

但是在你的命令中,我會嘗試在執行它之前用引號將查詢包裝起來。

results = `mysql -h <hostname> -u root -D build -e "#{query}"` 
+0

我寫的腳本必須在多臺個人計算機上運行,​​所以我唯一保證的是他們已經安裝了mysql,我可以告訴他們是否有gem。也謝謝你,因爲查詢周圍的雙引號使它執行。 –

1

任何原因,你不能只使用MySQL的寶石?

+0

我寫的腳本必須在多臺個人機器上運行,所以我唯一保證的是他們已經安裝了mysql,我可以告訴他們是否有gem。 –