石鑫华视觉论坛

 找回密码
 注册会员
查看: 2516|回复: 0

[互联网] Discuz论坛修改会员UID的方法

[复制链接]
  • TA的每日心情

    10 小时前
  • 签到天数: 3384 天

    连续签到: 6 天

    [LV.Master]2000FPS

    发表于 2021-5-10 10:50:00 | 显示全部楼层 |阅读模式 来自:广东省东莞市 电信

    注册登陆后可查看附件和大图,以及购买相关内容

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

    x
    Discuz论坛修改会员UID的方法

    因为以前一个历史问题,论坛的UID,直接从两万多变成了16777215(也就是mediumint(8)的最大值,8位宽度的整形,也就是2^24),之后再注册,就无法注册了,提示UID已经存在,因为UID一直是最大的值,不能再往上增加了。当时的解决办法,只是为了应急,删除了一些表中的异常数据,但是在其它一些表中,仍然保留了很多和删除UID相关的数据。这次一并处理了。
    和UID相关的表,本论坛的Discuz中大概有170张表(与插件也有关系,当然,这里演示的,如果一个表中有多个和UID相关的键,则当作两个表来处理,例如说朋友关系的表,就是两个UID的,一个是自己的UID,另一个是朋友的UID)。
    QQ截图20210508174637.jpg
    涉及到的表
    这里涉及到的表数量比较多,当然,有些表里面根本没有数据,也就没有必要去修改,这个得看自己的论坛数据库的具体内容。本论坛涉及到的表与键:
    pre_common_admincp_member;uid
    pre_common_admincp_session;uid
    pre_common_block_favorite;uid
    pre_common_block_item_data;uid
    pre_common_block_permission;uid
    pre_common_card_log;uid
    pre_common_credit_log;uid
    pre_common_credit_rule_log;uid
    pre_common_credit_rule_log_field;uid
    pre_common_diy_data;uid
    pre_common_grouppm;authorid
    pre_common_invite;uid
    pre_common_invite;fuid
    pre_common_magiclog;uid
    pre_common_member;uid
    pre_common_member_action_log;uid
    pre_common_member_archive;uid
    pre_common_member_connect;uid
    pre_common_member_count;uid
    pre_common_member_count_archive;uid
    pre_common_member_crime;uid
    pre_common_member_crime;operatorid
    pre_common_member_field_forum;uid
    pre_common_member_field_forum_archive;uid
    pre_common_member_field_home;uid
    pre_common_member_field_home_archive;uid
    pre_common_member_grouppm;uid
    pre_common_member_log;uid
    pre_common_member_magic;uid
    pre_common_member_medal;uid
    pre_common_member_newprompt;uid
    pre_common_member_profile;uid
    pre_common_member_profile_archive;uid
    pre_common_member_security;uid
    pre_common_member_secwhite;uid
    pre_common_member_status;uid
    pre_common_member_status_archive;uid
    pre_common_member_validate;uid
    pre_common_member_verify;uid
    pre_common_member_verify_info;uid
    pre_common_mytask;uid
    pre_common_onlinetime;uid
    pre_common_report;uid
    pre_common_searchindex;uid
    pre_common_session;uid
    pre_common_statuser;uid
    pre_common_template_permission;uid
    pre_common_uin_black;uid
    pre_connect_disktask;uid
    pre_connect_feedlog;uid
    pre_connect_memberbindlog;uid
    pre_connect_postfeedlog;uid
    pre_dsu_paulsign;uid
    pre_forum_access;uid
    pre_forum_activity;uid
    pre_forum_activityapply;uid
    pre_forum_attachment;uid
    pre_forum_attachment_0;uid
    pre_forum_attachment_1;uid
    pre_forum_attachment_2;uid
    pre_forum_attachment_3;uid
    pre_forum_attachment_4;uid
    pre_forum_attachment_5;uid
    pre_forum_attachment_6;uid
    pre_forum_attachment_7;uid
    pre_forum_attachment_8;uid
    pre_forum_attachment_9;uid
    pre_forum_attachment_unused;uid
    pre_forum_collection;uid
    pre_forum_collectioncomment;uid
    pre_forum_collectionfollow;uid
    pre_forum_collectioninvite;uid
    pre_forum_collectionteamworker;uid
    pre_forum_creditslog;uid
    pre_forum_debate;uid
    pre_forum_debatepost;uid
    pre_forum_groupcreditslog;uid
    pre_forum_groupinvite;uid
    pre_forum_groupuser;uid
    pre_forum_hotreply_member;uid
    pre_forum_medallog;uid
    pre_forum_modwork;uid
    pre_forum_order;uid
    pre_forum_polloption_image;uid
    pre_forum_pollvoter;uid
    pre_forum_post;authorid
    pre_forum_postcomment;authorid
    pre_forum_postlog;uid
    pre_forum_post_location;uid
    pre_forum_promotion;uid
    pre_forum_ratelog;uid
    pre_forum_spacecache;uid
    pre_forum_thread;authorid
    pre_forum_threadhidelog;uid
    pre_forum_threadlog;uid
    pre_forum_threadmod;uid
    pre_forum_threadpartake;uid
    pre_forum_trade;sellerid
    pre_forum_tradelog;sellerid
    pre_forum_tradelog;buyerid
    pre_forum_warning;operatorid
    pre_forum_warning;authorid
    pre_home_album;uid
    pre_home_appcreditlog;uid
    pre_home_blacklist;uid
    pre_home_blog;uid
    pre_home_blogfield;uid
    pre_home_class;uid
    pre_home_clickuser;uid
    pre_home_comment;uid
    pre_home_comment;authorid
    pre_home_docomment;uid
    pre_home_doing;uid
    pre_home_favorite;uid
    pre_home_feed;uid
    pre_home_feed_app;uid
    pre_home_follow;uid
    pre_home_follow;followuid
    pre_home_follow_feed;uid
    pre_home_follow_feed_archiver;uid
    pre_home_friend;uid
    pre_home_friend;fuid
    pre_home_friendlog;uid
    pre_home_friendlog;fuid
    pre_home_friend_request;uid
    pre_home_friend_request;fuid
    pre_home_notification;uid
    pre_home_notification;authorid
    pre_home_pic;uid
    pre_home_poke;uid
    pre_home_poke;fromuid
    pre_home_pokearchive;uid
    pre_home_pokearchive;fromuid
    pre_home_share;uid
    pre_home_share;fromuid
    pre_home_show;uid
    pre_home_specialuser;uid
    pre_home_specialuser;opuid
    pre_home_userapp;uid
    pre_home_visitor;uid
    pre_home_visitor;vuid
    pre_myrepeats;uid
    pre_portal_article_title;uid
    pre_portal_attachment;uid
    pre_portal_category;uid
    pre_portal_category_permission;uid
    pre_portal_topic;uid
    pre_portal_topic_pic;uid
    pre_security_eviluser;uid
    pre_security_failedlog;uid
    pre_ucenter_admins;uid
    pre_ucenter_feeds;uid
    pre_ucenter_friends;uid
    pre_ucenter_friends;friendid
    pre_ucenter_memberfields;uid
    pre_ucenter_members;uid
    pre_ucenter_newpm;uid
    pre_ucenter_pm_lists;authorid
    pre_ucenter_pm_members;uid
    pre_ucenter_pm_messages_0;authorid
    pre_ucenter_pm_messages_1;authorid
    pre_ucenter_pm_messages_2;authorid
    pre_ucenter_pm_messages_3;authorid
    pre_ucenter_pm_messages_4;authorid
    pre_ucenter_pm_messages_5;authorid
    pre_ucenter_pm_messages_6;authorid
    pre_ucenter_pm_messages_7;authorid
    pre_ucenter_pm_messages_8;authorid
    pre_ucenter_pm_messages_9;authorid
    pre_ucenter_protectedmembers;uid


    QQ截图20210508174648.jpg
    更新UID程序框图
    这里更新UID的方法,其实还是比较简单的,只需要使用更新的SQl语句即:update 表名 set UID键名=新UID值 where UID键名=旧UID值;
    当然,这里是先得到有UID的表中的所有UID数据,然后循环处理这些UID,如果旧UID在Ucenter的member表中有值,则更新。如果Ucenter的member表中没有相应的值,则是以前删除了一些数据,还有遗留的,则删除这些冗余数据(delete语句),另外为了加快处理速度,如果新UID与旧UID是相同的,那就是没有变更,就不处理。
    批量处理起来,还是比较耗时的,还算本论坛的数据量不大,总有效UID只有26000多个,170张表,大部分的内容都比较少,但是有几个表的数据量还是比较大的,像member会员、post回帖等相关的表,数据量都比较大。处理起来,最终花了一两个小时修改所有数据库。
    当然,最开始其实是使用Ucenter的member表的UID来做for循环索引的,但是这样不能删除表中的冗余数据,而且UID比较多,但是很多表中没有相应的值,也需要去处理一次,那时候看其处理速度,估计需要二三十个小时,只能停止下来,放弃了那种方法。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

    LabVIEW HALCON图像处理入门教程(24.09)
    石鑫华机器视觉与LabVIEW Vision图像处理PDF+视频教程11种全套
    《LabVIEW Vision函数实例详解2020-2024》教程-NI Vision所有函数使用方法介绍,基于NI VISION2020,兼容VDM21/22/23/24

    QQ|石鑫华视觉论坛 |网站地图

    GMT+8, 2024-11-22 18:46

    Powered by Discuz! X3.4

    © 2001-2024 Discuz! Team.

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