Discuz教程网

[已解决]论坛和UC怎么同步UID

 关闭 [复制链接]
authicon BOHOHOBO 发表于 2012-3-29 18:56:06 | 显示全部楼层 |阅读模式
空间突然出问题了,数据库被毁了,重新安装还原数据发现论坛的备份是12月份的,uc的数据是9月份的,论坛有2000多会员,uc里面只有300多,现在不能注册,注册就提示UID被占用,请问怎么才能让UC同步论坛的会员UID呢?用tools也不行
最佳答案
avatar
2012-3-30 12:11:31
这里有个恢复的代码,不过有人测试说有问题。建议你本地先看看有咩有问题
  1. <?php
  2. $dbserver ='localhost'; //此处改成数据库服务器地址
  3. $dbuser ='root';//此处写数据库用户名
  4. $dbpwd ='123456';//数据库密码
  5. $dbname ='discuz';//数据库名称
  6. $charset ='gbk';//此处写字符集gbk或者utf8
  7. $uc_pre ='pre_ucenter_';//UC表前缀
  8. $dx_pre ='pre_';//Discuz! X2表前缀
  9. //此行开始向下不要改动
  10. set_time_limit(0); //0为无限制
  11. $connect=mysql_connect($dbserver,$dbuser,$dbpwd) or die("无法连接数据库");
  12. @mysql_select_db($dbname,$connect);
  13. mysql_query("set names $charset");
  14. $query = mysql_query("SELECT * FROM `{$uc_pre}members` WHERE `uid` not in(select `uid` from `{$dx_pre}common_member`) ",$connect);
  15. while($user = mysql_fetch_array($query)) {
  16. $password=$user[password];
  17. mysql_query(" replace INTO `{$dx_pre}common_member` (uid,username,password,adminid,groupid,regdate,email) VALUES ('$user[uid]', '$user[username]', '$password','0','10','$user[regdate]','$user[email]') ");
  18. mysql_query(" replace INTO `{$dx_pre}common_member_field_forum` (uid) VALUES ('$user[uid]')");
  19. mysql_query(" replace INTO `{$dx_pre}common_member_field_home` (uid) VALUES ('$user[uid]')");
  20. }
  21. echo "已从UC批量导入激活成功";
  22. ?>
复制代码





上一篇:更改论坛QQ登入的位置
下一篇:开心网互联插件 For DZ X2.5
authicon 主编 发表于 2012-3-29 20:36:21 | 显示全部楼层
全新安装,上传DZ备份,恢复。默认DZ表里的用户数据优先
authicon dly 发表于 2012-3-29 20:51:51 | 显示全部楼层
使用Discuz官方的tools工具
36020120329205237875.png
authicon  楼主| BOHOHOBO 发表于 2012-3-29 21:10:23 | 显示全部楼层
tools工具同步UID不行,提出出错

360截图20120329211046967.jpg
authicon  楼主| BOHOHOBO 发表于 2012-3-29 21:48:56 | 显示全部楼层
dly 发表于 2012-3-29 20:51
使用Discuz官方的tools工具

tools工具同步UID不行,提示出错

authicon dly 发表于 2012-3-29 22:01:38 | 显示全部楼层
BOHOHOBO 发表于 2012-3-29 21:48
tools工具同步UID不行,提示出错

提示UID被占用最直接是去数据库修改uid的递增值,使UC和Discuz一样
authicon 主编 发表于 2012-3-30 12:08:00 | 显示全部楼层
dly 发表于 2012-3-29 22:01
提示UID被占用最直接是去数据库修改uid的递增值,使UC和Discuz一样

我恢复数据的时候绕弯子,DZ转PW再转DZ,转回去的时候遇到这个问题过 =-=
authicon 主编 发表于 2012-3-30 12:11:31 | 显示全部楼层    本楼为最佳答案   
这里有个恢复的代码,不过有人测试说有问题。建议你本地先看看有咩有问题
  1. <?php
  2. $dbserver ='localhost'; //此处改成数据库服务器地址
  3. $dbuser ='root';//此处写数据库用户名
  4. $dbpwd ='123456';//数据库密码
  5. $dbname ='discuz';//数据库名称
  6. $charset ='gbk';//此处写字符集gbk或者utf8
  7. $uc_pre ='pre_ucenter_';//UC表前缀
  8. $dx_pre ='pre_';//Discuz! X2表前缀
  9. //此行开始向下不要改动
  10. set_time_limit(0); //0为无限制
  11. $connect=mysql_connect($dbserver,$dbuser,$dbpwd) or die("无法连接数据库");
  12. @mysql_select_db($dbname,$connect);
  13. mysql_query("set names $charset");
  14. $query = mysql_query("SELECT * FROM `{$uc_pre}members` WHERE `uid` not in(select `uid` from `{$dx_pre}common_member`) ",$connect);
  15. while($user = mysql_fetch_array($query)) {
  16. $password=$user[password];
  17. mysql_query(" replace INTO `{$dx_pre}common_member` (uid,username,password,adminid,groupid,regdate,email) VALUES ('$user[uid]', '$user[username]', '$password','0','10','$user[regdate]','$user[email]') ");
  18. mysql_query(" replace INTO `{$dx_pre}common_member_field_forum` (uid) VALUES ('$user[uid]')");
  19. mysql_query(" replace INTO `{$dx_pre}common_member_field_home` (uid) VALUES ('$user[uid]')");
  20. }
  21. echo "已从UC批量导入激活成功";
  22. ?>
复制代码


authicon  楼主| BOHOHOBO 发表于 2012-3-30 12:49:52 | 显示全部楼层
主编 发表于 2012-3-30 12:11
这里有个恢复的代码,不过有人测试说有问题。建议你本地先看看有咩有问题

谢谢主编,我用你写的那个sql语句同步了,就是后面同步进去的会员全部要重置密码
authicon 主编 发表于 2012-3-30 15:08:15 | 显示全部楼层
BOHOHOBO 发表于 2012-3-30 12:49
谢谢主编,我用你写的那个sql语句同步了,就是后面同步进去的会员全部要重置密码

其实最好的办法还是只回DZ的备份。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2024-5-19 21:45

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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