我正在尝试设置一个名为pushpool的开源软件,它本质上是一个JSON rpc服务器,但由于某些原因,我在尝试worker身份验证时总是收到"mysql pwdb query failed at fetch“。
下面是简要介绍:
操作系统是运行MySql前端的Ubuntu :名为"SimpleCoin“的开源软件Miners连接正常,但pushpool在连接时返回"mysql pwdb query failed at fetch”,因为mysql试图将用户名读取为"?“
mysql.log显示pushpool正在尝试传递以下语句:
SELECT password FROM pool_worker WHERE username = ?
该文件由本节中的推池的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 (?, ?, ?, ?, ?, ?)"
},Worker/pass信息已添加到表"pool_worker“中。
在我看来,json客户端不喜欢在中处理变量的方式:
"stmt.pwdb":"SELECT password FROM pool_worker WHERE username = ?",
从"?“开始未正确替换为连接的矿工的用户名,否则该语句在从mysql命令行使用已知的工人用户名进行测试时工作正常...
关于如何修复变量,以便json将正确的语句传递给mysql…?
提前感谢!
发布于 2013-12-18 05:49:10
MySQL调用未正确处理变量。这不是一个bug,而是一个令人困惑的错误消息。
可能的原因:您的pool_worker表可能是空的(没有一条记录)。
如果它以前工作过,那么您可能在某个时候重新创建了数据库结构。重新创建通常涉及删除先前的表结构,并从头开始重新创建新的表结构。该过程还会擦除该表中的所有记录。即使新创建的表结构与旧的表结构相同,记录也会丢失。
如果以前从未使用过,那么您可能从未将用户名和密码插入到pool_worker表中。
解决方法很简单:在pool_worker表中插入至少一条用户名和密码记录(非空字符串)。
一旦至少插入了一条记录用户名和密码,消息"mysql pwdb query failed at fetch“就不会再次出现。
https://stackoverflow.com/questions/15573697
复制相似问题