推荐应用
Discuz的存档表和主表手动合并完整方法
发布于 2014-05-04
存档表不知怎么回事,非常坑爹,有部分用户的主题数积分等全部无法记录,显示空白。
现在这个操作备份原来的主表和存档表,如果有问题可以随时改回来,因此没什么风险。
建两个临时表备用,复制主表格式
将主表数据插入临表一
备份存档表
将存档表数据插入临表一
将临表一的数据去重复排序插入临表二
主表改成bak备份,临表二改成主表名,清空存档表的数据
除了这个表pre_common_member,还有pre_common_member_field_home,pre_common_member_profile,pre_common_member_status等几个带archive的,都这样合并为一个,并保留个空的archive表。
不知道这样的语法有没问题,感觉应该是最小影响的操作,再用tools重新统计积分,现在所有用户的积分和信息都正常了。但是后台的tools的检查用户信息表依然不能用,总是显示检查中由1-1001,不断循环。
现在这个操作备份原来的主表和存档表,如果有问题可以随时改回来,因此没什么风险。
建两个临时表备用,复制主表格式
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等几个带archive的,都这样合并为一个,并保留个空的archive表。
不知道这样的语法有没问题,感觉应该是最小影响的操作,再用tools重新统计积分,现在所有用户的积分和信息都正常了。但是后台的tools的检查用户信息表依然不能用,总是显示检查中由1-1001,不断循环。