求助WCG无法连接网络的问题
本人求助各位大神,现在的情况是计算机算WCG一直显示通讯被推迟的情况,无法下载任务,烦请大家帮忙看看,谢谢啦!(boinc版本7.8.3.6)把项目删掉重新添加一下。
如果还是不行就添加一个其它项目看看是否正常。 0xCAFEBABE 发表于 2018-4-7 08:51
把项目删掉重新添加一下。
如果还是不行就添加一个其它项目看看是否正常。 ...
删除过了,还是这样,其他项目也是一样
本帖最后由 金鹏 于 2018-4-7 15:37 编辑
其他设置呢?比如
把程序彻底删除(清理注册表)重装试试,连不上服务器的日志信息好像不是这样的 couldn't create host record in database ...楼主你在wcg官网上能访问自己的用户页面吗 金鹏 发表于 2018-4-7 15:35
其他设置呢?比如
设置是一样的
昂宿星团人 发表于 2018-4-7 18:43
couldn't create host record in database ...楼主你在wcg官网上能访问自己的用户页面吗
可以上的
金鹏 发表于 2018-4-7 15:35
其他设置呢?比如
设置都是一样的。另外,今早上boinc有一个提示,不明白什么意思
vardrag 发表于 2018-4-7 16:56
把程序彻底删除(清理注册表)重装试试,连不上服务器的日志信息好像不是这样的 ...
我也同意把程序彻底删除重装试试,日志里报的是数据库访问失败。重装后不要使用账户管理器,手动添加项目。
另外LZ可以换一台电脑试试,以确保账户本身没有问题。
诶,没用过项目管理器,不懂了。。 还是不行,已经卸载了,清除了注册表,重新下载,没有用项目管理器,手动添加,还是同样的日志提示 仔细对比了一下LZ和我的日志,只有最后一句“Couldn't create host record in database”最可疑。在代码中查了查,发现是在对 MySql 执行 insert 的时候出错了。函数:sched/handle_request.cpp#authenticate_user()host = g_request->host;
host.id = 0;
host.create_time = time(0);
host.userid = g_reply->user.id;
host.rpc_seqno = 0;
host.expavg_time = time(0);
safe_strcpy(host.venue, g_reply->user.venue);
host.fix_nans();
retval = host.insert();
if (retval) {
g_reply->insert_message(
"Couldn't create host record in database", "low"
);
boinc_db.print_error("host.insert()");
log_messages.printf(MSG_CRITICAL, "host.insert() failed\n");
return retval;
}这个 host 正是 class DB_HOST,DB_HOST 继承自 DB_BASE,于是 host.insert() 调用到了 db/db_base.cpp#insert():int DB_BASE::insert() {
char vals, query;
db_print(vals);
sprintf(query, "insert into %s set %s", table_name, vals);
return db->do_query(query);
}而此处的 db_print() 是由 DB_HOST 实现的,用来拼装 insert 所需的参数,比较长,这里就不展开了。看看下面的关键地方 db->do_query():int DB_CONN::do_query(const char* p) {
int retval;
if (g_print_queries) {
#ifdef _USING_FCGI_
log_messages.printf(MSG_NORMAL, "query: %s\n", p);
#else
fprintf(stderr, "query: %s\n", p);
#endif
}
retval = mysql_query(mysql, p);
if (retval) {
fprintf(stderr, "Database error: %s\nquery=%s\n", error_string(), p);
}
return retval;
}应该就是 mysql_query() 这里出错了,但是看不到详细的log,所以没法断定为什么会插入出错。
还有一个疑点,mysql_query() 是在哪里实现的没有找到,我不记得安装 boinc 的时候安装过 mysql,看 boinc 也没有带 mysql 相关的库,甚至在 db/db_base.h 里引用的 mysql.h 也没有找到,莫非追错地方了。。
还有一种可能是某个类继承了 DB_CONN 并且重写了 insert(),但是我并没有找到这样的地方。
我怀疑 LZ 的安装包有没有问题,我的安装包 MD5 值是:22a01b830c145133a8cabe5b55048c94 boinc_7.8.3_windows_x86_64.exe
LZ 可以校验下 MD5 值与我的是否相同。
也可以换一个安装包试试。
或者把这个安装包装到其它电脑上试试。
本帖最后由 0xCAFEBABE 于 2018-4-9 11:05 编辑
还有一个大胆的猜测,如果数据库要求 User 不能为空,即 host.userid 不能为空,若此时 host.userid 恰巧为空就会插入失败。
而若 host.userid 来自于网络,那么如果网络连接失败就会导致 host.userid 为空。
LZ可以把防火墙关闭再试试。
以上纯属猜测,没有追代码,因为在调用 host.insert() 的上面看到了一条注释:// g_reply->user is filled in and valid at this point 0xCAFEBABE 发表于 2018-4-9 11:02
还有一个大胆的猜测,如果数据库要求 User 不能为空,即 host.userid 不能为空,若此时 host.userid 恰巧为 ...
用的是公司电脑,可能是防火墙的问题,实在是不会折腾了。
页:
[1]
2