天空小小岛技术论坛

 找回密码
 注册
搜索
查看: 6200|回复: 0

[分享] phpwind 9.0 转换到 X3 版块丢失的问题解决方案

  [复制链接]
一粒米 发表于 2013-9-7 12:22:19 | 显示全部楼层 |阅读模式
问题描述
转换后,有些分类丢失,转换版块过程中出现数据库错误提示,类似



问题转换程序
http://www.discuz.net/thread-3251327-1-1.html

起因
pw9 如果是新安装的没有这个问题。
pw9 如果不是新安装的,而是从 pw87 升级上来的然后再转换就有这个问题

原理
pw87 中的 pw_forumsextra 表中版块分类并没有数据
pw87 升级到 pw9 后 pw_bbs_forum_extra 中版块分类并没有增加,只是把 pw_forumsextra 的数据添加进来了
然后此时转换 pw9 到 Discuz! X3

打开该转换程序中的
XConver_pw85_87_90_to_X3/data/phpwind/pw90 - 3 X/step_3.php
其中
  1. SELECT f.*, bfs.*, bfe.* FROM {$source_tablepre}bbs_forum f        
  2.                                                                         LEFT JOIN {$source_tablepre}bbs_forum_statistics bfs ON f.fid=bfs.fid
  3.                                                                         LEFT JOIN {$source_tablepre}bbs_forum_extra bfe ON f.fid=bfe.fid
  4.                                                                         ORDER BY f.fid ASC
复制代码
如果将此 sql 放到 phpmyadmin 里查询,如图



因为版块分类没有数据,所以最后取到的 $pwforum[fid] 将会是 null
写入 pre_forum_forum 时 fid 会写成0,如果多个分类没数据,就会出现多条fid 为0 的数据,写入时自然要报 duplicate 的错误了。

解决方案
其实这个地方应该是不需要联 bbs_forum_extra 这个表的,因为在循环中有判断如果 fup 非空,就去查询 bbs_forum_extra
所以把 XConver_pw85_87_90_to_X3/data/phpwind/pw90 - 3 X/step_3.php 中的
  1. $query = $xc->db['source']->query("SELECT f.*, bfs.*, bfe.* FROM {$source_tablepre}bbs_forum f        
  2.                                                                         LEFT JOIN {$source_tablepre}bbs_forum_statistics bfs ON f.fid=bfs.fid
  3.                                                                         LEFT JOIN {$source_tablepre}bbs_forum_extra bfe ON f.fid=bfe.fid
  4.                                                                         ORDER BY f.fid ASC") or dexit();
复制代码
改成
  1. $query = $xc->db['source']->query("SELECT f.*, bfs.* FROM {$source_tablepre}bbs_forum f
  2.         LEFT JOIN {$source_tablepre}bbs_forum_statistics bfs ON f.fid=bfs.fid
  3.         ORDER BY f.fid ASC") or dexit();
复制代码
即可。

补充说明
多表联合查询时,如果字段名有重复的,要注意覆盖关系,或者使用别名。

另外
如果改完之后不是全部重新转换,而是单独转换版块的话,记得转换完版块的后面那一步主题分类也重新转一下。要不然分类就没有了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|天空小小岛 ( 京ICP备17043412号-1|

GMT+8, 2018-11-13 23:37 , Processed in 0.104442 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表