盘卓云-盘卓云社区-全球服务器主机管理面板技术交流

 找回密码
 立即注册
搜索
本站永久域名:www.vpsol.com维优网官方QQ群:29611365论坛管理规则,新老会员必看
开启左侧

discuz 用户表 主表 存档表 合并

[复制链接]
蓝浩 发表于 2017-6-26 12:44:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
原来用2.5,执行了用户优化用户表就分成了两个,有什么问题我就不说了,前两天升级了DX3.2顺便把用户表合并清理了,具体步骤如下:
版本:DX3.2
工具:phpmyadmin
说明:我也是按照论坛一位朋友的操作来的,写出来一是给需要做合并的朋友参考,另外也给自己留个记录。。。,数据库操作有风险,自己注意备份,出了问题别来骂我就好,我只是把自己的操作步骤写出来,不证明别人都一定没问题。。。。
-----------------------------------------------------------------------------------------------------
建两个临时表备用,复制主表格式
create table  pre_common_member_temp like  pre_common_member;
create table  pre_common_member_temp2 like  pre_common_member;

将主表数据插入临表一
insert into pre_common_member_temp  select * from pre_common_member;

备份存档表
create table  pre_common_member_archive_bak like  pre_common_member_archive;
insert into  pre_common_member_archive_bak select * from  pre_common_member_archive;

将存档表数据插入临表一
insert into pre_common_member_temp  select * from pre_common_member_archive;

将临表一的数据去重复排序插入临表二
insert into pre_common_member_temp2  select * from pre_common_member_temp order by uid;

主表改成bak备份,临表二改成主表名,清空存档表的数据
ALTER  TABLE pre_common_member RENAME TO pre_common_member_bak;
ALTER  TABLE pre_common_member_temp2 RENAME TO pre_common_member;
TRUNCATE TABLE  `pre_common_member_archive`;

除了这个表pre_common_member,还有pre_common_member_field_home,pre_common_member_profile,pre_common_member_status,pre_common_member_count(最后这个不确定,忘记了,好像一共是5个)等几个带archive的,都这样合并为一个,并保留个空的archive表。

上面做完基本就没事了,有强迫症的可以删除带有Archive的空表,备份的bak表都可以删除。

删除带有Archive的空表,更新缓存的时候出现这个错误,而且注册不了(在注册的最后一步会出现不跳转的情况)

(1146) Table 'db_web411070.common_member_archive' doesn't existSELECT COUNT(*) FROM common_member_archive
解决方法:

即在站长—数据库—升级(Discuz! 数据库升级 - 请将数据库升级语句粘贴在下面中执行语句 :
DELETE FROM `pre_common_setting` WHERE `skey` = 'membersplit';

若没有找到执行语句的输入窗口 则修改config/config_global.php 当中的 $_config[admincp][runquery] 设置修改为 1
(为了安全执行完该语句后 确认解决了1146错误后 再将配置该回来 )  刷新后再输入执行。

为了数据安全执行该语句前建议备份数据
全球主机服务器管理面板交流社区
回复

使用道具 举报

 楼主| 蓝浩 发表于 2017-6-26 12:47:23 | 显示全部楼层
论坛后台升级数据库:站长》数据库》升级
  1. insert into pre_common_member select * from pre_common_member_archive;
  2. insert into pre_common_member_count select * from pre_common_member_count_archive;
  3. insert into pre_common_member_field_forum select * from pre_common_member_field_forum_archive;
  4. insert into pre_common_member_field_home select * from pre_common_member_field_home_archive;
  5. insert into pre_common_member_profile select * from pre_common_member_profile_archive;
  6. insert into pre_common_member_status select * from pre_common_member_status_archive;
复制代码

以上六条的意思就是把六个存档表中的东西合并到主表中。

然后再使用如下升级数据库:
  1. TRUNCATE TABLE  `pre_common_member_archive`;
  2. TRUNCATE TABLE  `pre_common_member_count_archive`;
  3. TRUNCATE TABLE  `pre_common_member_field_forum_archive`;
  4. TRUNCATE TABLE  `pre_common_member_field_home_archive`;
  5. TRUNCATE TABLE  `pre_common_member_profile_archive`;
  6. TRUNCATE TABLE  `pre_common_member_status_archive`;
复制代码
以上六条的意思就是把六个存档表数据全部清空。

或者直接执行
  1. DROP TABLE  `pre_common_member_archive`;
  2. DROP TABLE  `pre_common_member_count_archive`;
  3. DROP TABLE  `pre_common_member_field_forum_archive`;
  4. DROP TABLE  `pre_common_member_field_home_archive`;
  5. DROP TABLE  `pre_common_member_profile_archive`;
  6. DROP TABLE  `pre_common_member_status_archive`;
复制代码
以上六条的意思就是把六个存档表数据全部删除。


再次重申:使用这个方法导致论坛出问题的话,本人概不负责,也无法提供其他解决方法,使用前请备份数据和数据库!
全球主机服务器管理面板交流社区
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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