0

我正在尝试设置名为 pushpool 的开源软件,它本质上是一个 JSON rpc 服务器,由于某种原因,在尝试工作人员身份验证时,我不断收到“mysql pwdb query failed at fetch”。

这是破败:

操作系统是 Ubuntu 运行 MySql 前端:名为“SimpleCoin”的开源软件矿工连接正常,但 pushpool 在连接时返回“mysql pwdb query failed at fetch”,因为 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 ...?

提前致谢!

4

1 回答 1

0

MySQL 调用未正确处理变量。这不是错误,而是令人困惑的错误消息。

可能的原因:您的 pool_worker 表可能是空的(不是一条记录)。

如果它之前有效,那么您可能在某个时候重新创建了数据库结构。重新创建通常涉及删除以前的表结构并从头开始重新创建新的表结构。该过程还会删除该表中的所有记录。即使新创建的表结构与旧表结构相同,记录也会丢失。

如果它以前从未工作过,您可能从未将用户名和密码插入 pool_worker 表中。

修复很简单:在 pool_worker 表中插入至少一条用户名和密码记录(非空字符串)。

插入至少一个记录用户名和密码后,“mysql pwdb query failed at fetch”消息不应再次出现。

于 2013-12-17T21:49:10.310 回答