2013-03-22 45 views
0

我試圖設置開源軟件稱爲pushpool,它本質上是一個JSON rpc服務器,並且由於某種原因,當嘗試進行工作人員身份驗證時,我一直收到「mysql pwdb query at fetch」 。JSON調用MySQL不正確處理變量

這裏的破敗:

操作系統是Ubuntu的 運行MySQL 前端:開源軟件被稱爲「SimpleCoin」 礦工連接正常,但pushpool恢復連接時,「MySQL的PWDB查詢中獲取失敗」因爲mysql試圖讀取用戶名爲「?」

mysql.log顯示pushpool試圖通過下面的語句:

SELECT password FROM pool_worker WHERE username = ?

這是在本節被稱爲由pushpool的server.json文件(用戶名/密碼信息已被編輯):

# database settings 
    "database" : { 
               "engine" : "mysql", 

                 # 'host' defaults to localhost, if not specified 
               # "host" : "localhost", 

               # 'port' uses proper default port for the DB engine, 
               # if not specified 
               "port" : "3306", 

               "name" : "simplecoin", 
               "username" : "SuperCoolUsername", 
               "password" : "SuperSecretPassword", 
               "sharelog" : true, 
               "stmt.pwdb":"SELECT password FROM pool_worker WHERE username = ?", 

               "stmt.sharelog":"INSERT INTO shares (rem_host, username, our_result, upstream_result, reason, solution) VALUES (?, ?, ?, ?, ?, ?)" 
    }, 

工人/通行證信息已添加到表「pool_worker」。

這似乎對我來說,JSON客戶不喜歡的變量正在被處理的方式:

"stmt.pwdb":"SELECT password FROM pool_worker WHERE username = ?",

自「?」沒有正確地被連接礦工的用戶名替換,聲明,否則工作正常時,從mysql命令行與已知的工作人員用戶名進行測試...

任何想法如何我可以修復變量,所以JSON通過正確的語句MySQL的?

在此先感謝!

回答

0

MySQL調用沒有正確處理變量。這不是一個錯誤,而是一個令人困惑的錯誤信息。

可能的原因:您的pool_worker表可能爲空(不是單個記錄)。

如果它在那之前工作過,那麼也許你在某個時候重新創建了數據庫結構。重新創建通常涉及刪除以前的表結構並從頭開始重新創建新結構。該過程還會刪除該表中的所有記錄。即使新創建的表結構與舊結構相同,記錄也會丟失。

如果以前從未工作過,則可能從未將用戶名和密碼插入到pool_worker表中。

修復很簡單:在pool_worker表中插入至少一條用戶名和密碼記錄(非空字符串)。

一旦至少有一個記錄用戶名和密碼被插入,消息「mysql pwdb query fetch at fetch」不應該再次出現。