·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

求教大侠们:PW8.7转dz3.0在最后统计用户精华帖数这步报错

287 2
发表于 2023-5-7 07:42:31 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
服务器软件        Apache/2.2.19 (Win32) PHP/5.2.17
服务器 MySQL 版本        5.0.90-community-nt

PW8.7转dz3.0,基本还算顺利,除了原来新鲜事的回复不能导入,其他基本都成功了,在最后统计用户精华帖数这步报错(在转换程序\cache\lock目录下,有个converterror.php,记录了所有转换错误,正在转的小伙伴们可以去查看一下。)报错代码如下:
  1. <?PHP exit;?>        2023-05-04 12:10:52        /tox3/index.php?mod=stats&do=memberdigests&op=detail&current=6000&pertask=3000        <b>XConvert info</b>: MySQL Query Error<br /> <br /> <b>Time</b>: 2023-5-4 12:10pm<br /> <b>SQL</b>: UPDATE x3gbk.[Table]common_member_count SET digestposts=digestposts+'6' WHERE uid IN (,17586,24053,6363)<br /> <b>Error</b>: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '17586,24053,6363)' at line 1<br /> <b>Errormsg.</b>: <br /> <b>Errno.</b>: 1064<br />
复制代码
求教大侠们:PW8.7转dz3.0在最后统计用户精华帖数这步报错 求教,大侠,最后,统计,用户


我要说一句 收起回复

评论2

CrystαlLv.8 发表于 2023-5-7 07:43:23 | 查看全部
我查找了一下,代码文件在安装目录\source\module下面的stats.inc.php的第130行里,不知道是不是代码有问题,麻烦大侠们给指点一下!
  1. //统计用户精华帖数                        $membersarray = $postsarray = array();                        if($xc->config['db']['discuz_type'] == 'x') {                                $xc->db['discuz']->query("UPDATE {$discuz_tablepre}common_member_count SET digestposts=0", 'UNBUFFERED');                        }                                                $maxtid = $xc->db['discuz']->result($xc->db['discuz']->query("SELECT max(tid) FROM {$discuz_tablepre}".($xc->config['db']['discuz_type'] == 'x' ? "forum_thread": "threads")." WHERE digest<>'0' AND displayorder>='0'"), 0);                        if($current <= $maxtid) {                                $processed = 1;                        }                        $query = $xc->db['discuz']->query("SELECT authorid FROM {$discuz_tablepre}".($xc->config['db']['discuz_type'] == 'x' ? "forum_thread": "threads")." WHERE digest<>'0' AND displayorder>='0' AND tid >= $current AND tid < $current + $pertask");                        while($thread = $xc->db['discuz']->fetch_array($query)) {                                $thread['authorid'] && $membersarray[$thread['authorid']]++;                                $processed = 1;                        }                                                $extra_str = '';                        foreach($membersarray as $uid => $posts) {                                $postsarray[$posts] .= $extra_str.$uid;                                $extra_str = ',';                        }                        unset($membersarray);                        foreach($postsarray as $posts => $uids) {                                $xc->db['discuz']->query("UPDATE {$discuz_tablepre}".($xc->config['db']['discuz_type'] == 'x' ? "common_member_count": "members")." SET digestposts=digestposts+'$posts' WHERE uid IN ($uids)", 'UNBUFFERED');                        }                        if($processed) {                                $show_message =$xc->language['stats_donig'].' '.$xc->language['stats_from'].$current.$xc->language['stats_to'].$next.$xc->language['stats_rowdata'];                                $show_message .= "<div id="checkflag" name="checkflag" style="width: 0px;height: 0px;overflow:auto;">ok</div>";                                $show_url = 'index.php?mod=stats&do='.$do.'&op=detail&current='.$next.'&pertask='.$pertask;                                $show_message .= "<p><a href="".$show_url."">".$xc->language['message_redirect']."</a></p><div align="right">[<a href="index.php?mod=stats&do=".$do."&op=detail&isstop=1  style="color:red">".$xc->language['message_stop']."</a>]</div><script>setTimeout("redirect('".$show_url."');", 1000);</script>";                        } else {                                $show_message = $xc->language['convert_ready'].$xc->language['stats_memberdigests_finish'].$xc->language['convert_date'].'......<br>';                                $show_message .= "<div id="checkflag" name="checkflag" style="width: 0px;height: 0px;overflow:auto;">ok</div>";                                $show_url = 'index.php?mod=stats&do=forumposts&op=detail';                                $show_message .= "<script>setTimeout("redirect('".$show_url."');", 1000);</script>";                        }                        file_put_contents(XCONVERT_ROOT.'./cache/lock/progress_stats.txt', $show_url);                } elseif($do == 'forumposts') {                        //统计版块的主题数、回复数、最后发表主题
复制代码
求教大侠们:PW8.7转dz3.0在最后统计用户精华帖数这步报错 求教,大侠,最后,统计,用户
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-18 01:24:01 | 查看全部
在PW8.7转DZ3.0的过程中,你遇到的错误是由于SQL语句的语法问题导致的。具体来说,错误信息显示在`UPDATE`语句中,`WHERE`子句的`uid IN`部分出现了问题。SQL语句中的`IN`子句要求提供一个有效的值列表,而你的SQL语句中出现了多余的逗号(`,`),导致语法错误。

### 错误分析:
  1. UPDATE x3gbk.common_member_count SET digestposts=digestposts+'6' WHERE uid IN (,17586,24053,6363)
复制代码

在这个SQL语句中,`IN`子句的开头有一个多余的逗号(`,`),导致MySQL无法正确解析这个语句。

### 解决方法:
你需要检查转换程序的代码,找到生成这个SQL语句的部分,并修复它。具体来说,你需要确保`IN`子句中的值列表是有效的,没有多余的逗号。

#### 1. 找到生成SQL语句的代码
通常,转换程序会有一个专门生成SQL语句的函数或方法。你需要找到这个部分,并检查`IN`子句的生成逻辑。

#### 2. 修复SQL语句
在生成`IN`子句时,确保值列表的开头没有多余的逗号。你可以通过以下方式修复:

  1. // 假设 $uids 是一个包含用户ID的数组
  2. $uids = array(17586, 24053, 6363);

  3. // 将数组转换为逗号分隔的字符串
  4. $uid_list = implode(',', $uids);

  5. // 生成SQL语句
  6. $sql = "UPDATE x3gbk.common_member_count SET digestposts=digestposts+'6' WHERE uid IN ($uid_list)";
复制代码


#### 3. 重新运行转换程序
修复代码后,重新运行转换程序,看看是否还会出现同样的错误。

### 其他建议:
- **检查数据库版本兼容性**:你使用的MySQL版本是5.0.90,而DZ3.0可能对MySQL的版本有更高的要求。建议升级到MySQL 5.5或更高版本,以确保更好的兼容性。
- **备份数据**:在进行任何数据库操作之前,务必备份你的数据,以防止数据丢失。
- **调试信息**:如果问题依然存在,可以启用PHP的错误日志,查看更详细的错误信息,帮助定位问题。

希望这些建议能帮助你解决问题。如果还有其他问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:18.119.103.40,GMT+8, 2025-5-10 08:15 , Processed in 0.529275 second(s), 77 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表