discuz 7.2快速升级discuz!x2的解决方法
通常情况下,由于 cdb_posts 和 cdb_threads 还有 cdb_attachments 是所有表中数据最大的。
所以升级的时候大部分时间也都花在了 cdb_posts 和 cdb_threads 和 cdb_attachments 表上。
那么可以在升级的时候,到升级页面勾选数据库表的这一步,将 cdb_posts cdb_threads threadsattachments 表前面的勾去掉。然后升级其他表。
然后使用SQL语句把老数据导入到新表来,注意下面的x2是x2的数据库名字,dz72的老的7.2的数据库名字。
1 2 3 |
INSERT INTO x2.pre_forum_thread (tid,fid,typeid,sortid,readperm,price,author,authorid,subject,dateline,lastpost,lastposter,views,replies,displayorder,highlight,digest,rate,special,attachment,moderated,closed,recommends,recommend_add,recommend_sub,heats,status) (SELECT tid,fid,typeid,sortid,readperm,price,author,authorid,subject,dateline,lastpost,lastposter,views,replies,displayorder,highlight,digest,rate,special,attachment,moderated,closed,recommends,recommend_add,recommend_sub,heats,status FROM dz72.cdb_threads); INSERT INTO x2.pre_forum_post (pid,fid,tid,first,author,authorid,subject,dateline,message,useip,invisible,anonymous,usesig,htmlon,bbcodeoff,smileyoff,parseurloff,attachment,rate,ratetimes,status) (select pid,fid,tid,first,author,authorid,subject,dateline,message,useip,invisible,anonymous,usesig,htmlon,bbcodeoff,smileyoff,parseurloff,attachment,rate,ratetimes,status FROM dz72.cdb_posts); |
修复pre_forum_post_tableid
找到现在 pre_forum_post 表最大的 pid
1 |
SELECT max( pid ) FROM `pre_forum_post`; |
将得到的最大 pid 加 1 后,执行SQL
(假如刚才查到的数值是1001)
1 |
ALTER TABLE `pre_forum_post_tableid` AUTO_INCREMENT=1001+1; |
附件分表部分:
执行以下SQL,同样x2是x2的数据库名字,dz72的老的7.2的数据库名字
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
TRUNCATE pre_forum_attachment; TRUNCATE pre_forum_threadimage; TRUNCATE pre_forum_attachment_0; TRUNCATE pre_forum_attachment_1; TRUNCATE pre_forum_attachment_2; TRUNCATE pre_forum_attachment_3; TRUNCATE pre_forum_attachment_4; TRUNCATE pre_forum_attachment_5; TRUNCATE pre_forum_attachment_6; TRUNCATE pre_forum_attachment_7; TRUNCATE pre_forum_attachment_8; TRUNCATE pre_forum_attachment_9; REPLACE INTO pre_forum_attachment (aid,tid,pid,uid,downloads)(SELECT aid,tid,pid,uid,downloads FROM dz72.cdb_attachments); UPDATE pre_forum_attachment SET tableid='0' where tid % 10 = 0; UPDATE pre_forum_attachment SET tableid='1' where tid % 10 = 1; UPDATE pre_forum_attachment SET tableid='2' where tid % 10 = 2; UPDATE pre_forum_attachment SET tableid='3' where tid % 10 = 3; UPDATE pre_forum_attachment SET tableid='4' where tid % 10 = 4; UPDATE pre_forum_attachment SET tableid='5' where tid % 10 = 5; UPDATE pre_forum_attachment SET tableid='6' where tid % 10 = 6; UPDATE pre_forum_attachment SET tableid='7' where tid % 10 = 7; UPDATE pre_forum_attachment SET tableid='8' where tid % 10 = 8; UPDATE pre_forum_attachment SET tableid='9' where tid % 10 = 9; REPLACE INTO pre_forum_attachment_0 (aid,tid,pid,uid,dateline,filename,filesize,attachment,remote,description,readperm,price,isimage,width,thumb)(SELECT a.aid,a.tid,a.pid,a.uid,a.dateline,a.filename,a.filesize,a.attachment,a.remote,af.description,a.readperm,a.price,a.isimage,a.width,a.thumb FROM dz72.cdb_attachments a LEFT JOIN dz72.cdb_attachmentfields af USING(aid) WHERE a.tid % 10 = 0); REPLACE INTO pre_forum_attachment_1 (aid,tid,pid,uid,dateline,filename,filesize,attachment,remote,description,readperm,price,isimage,width,thumb)(SELECT a.aid,a.tid,a.pid,a.uid,a.dateline,a.filename,a.filesize,a.attachment,a.remote,af.description,a.readperm,a.price,a.isimage,a.width,a.thumb FROM dz72.cdb_attachments a LEFT JOIN dz72.cdb_attachmentfields af USING(aid) WHERE a.tid % 10 = 1); REPLACE INTO pre_forum_attachment_2 (aid,tid,pid,uid,dateline,filename,filesize,attachment,remote,description,readperm,price,isimage,width,thumb)(SELECT a.aid,a.tid,a.pid,a.uid,a.dateline,a.filename,a.filesize,a.attachment,a.remote,af.description,a.readperm,a.price,a.isimage,a.width,a.thumb FROM dz72.cdb_attachments a LEFT JOIN dz72.cdb_attachmentfields af USING(aid) WHERE a.tid % 10 = 2); REPLACE INTO pre_forum_attachment_3 (aid,tid,pid,uid,dateline,filename,filesize,attachment,remote,description,readperm,price,isimage,width,thumb)(SELECT a.aid,a.tid,a.pid,a.uid,a.dateline,a.filename,a.filesize,a.attachment,a.remote,af.description,a.readperm,a.price,a.isimage,a.width,a.thumb FROM dz72.cdb_attachments a LEFT JOIN dz72.cdb_attachmentfields af USING(aid) WHERE a.tid % 10 = 3); REPLACE INTO pre_forum_attachment_4 (aid,tid,pid,uid,dateline,filename,filesize,attachment,remote,description,readperm,price,isimage,width,thumb)(SELECT a.aid,a.tid,a.pid,a.uid,a.dateline,a.filename,a.filesize,a.attachment,a.remote,af.description,a.readperm,a.price,a.isimage,a.width,a.thumb FROM dz72.cdb_attachments a LEFT JOIN dz72.cdb_attachmentfields af USING(aid) WHERE a.tid % 10 = 4); REPLACE INTO pre_forum_attachment_5 (aid,tid,pid,uid,dateline,filename,filesize,attachment,remote,description,readperm,price,isimage,width,thumb)(SELECT a.aid,a.tid,a.pid,a.uid,a.dateline,a.filename,a.filesize,a.attachment,a.remote,af.description,a.readperm,a.price,a.isimage,a.width,a.thumb FROM dz72.cdb_attachments a LEFT JOIN dz72.cdb_attachmentfields af USING(aid) WHERE a.tid % 10 = 5); REPLACE INTO pre_forum_attachment_6 (aid,tid,pid,uid,dateline,filename,filesize,attachment,remote,description,readperm,price,isimage,width,thumb)(SELECT a.aid,a.tid,a.pid,a.uid,a.dateline,a.filename,a.filesize,a.attachment,a.remote,af.description,a.readperm,a.price,a.isimage,a.width,a.thumb FROM dz72.cdb_attachments a LEFT JOIN dz72.cdb_attachmentfields af USING(aid) WHERE a.tid % 10 = 6); REPLACE INTO pre_forum_attachment_7 (aid,tid,pid,uid,dateline,filename,filesize,attachment,remote,description,readperm,price,isimage,width,thumb)(SELECT a.aid,a.tid,a.pid,a.uid,a.dateline,a.filename,a.filesize,a.attachment,a.remote,af.description,a.readperm,a.price,a.isimage,a.width,a.thumb FROM dz72.cdb_attachments a LEFT JOIN dz72.cdb_attachmentfields af USING(aid) WHERE a.tid % 10 = 7); REPLACE INTO pre_forum_attachment_8 (aid,tid,pid,uid,dateline,filename,filesize,attachment,remote,description,readperm,price,isimage,width,thumb)(SELECT a.aid,a.tid,a.pid,a.uid,a.dateline,a.filename,a.filesize,a.attachment,a.remote,af.description,a.readperm,a.price,a.isimage,a.width,a.thumb FROM dz72.cdb_attachments a LEFT JOIN dz72.cdb_attachmentfields af USING(aid) WHERE a.tid % 10 = 8); REPLACE INTO pre_forum_attachment_9 (aid,tid,pid,uid,dateline,filename,filesize,attachment,remote,description,readperm,price,isimage,width,thumb)(SELECT a.aid,a.tid,a.pid,a.uid,a.dateline,a.filename,a.filesize,a.attachment,a.remote,af.description,a.readperm,a.price,a.isimage,a.width,a.thumb FROM dz72.cdb_attachments a LEFT JOIN dz72.cdb_attachmentfields af USING(aid) WHERE a.tid % 10 = 9); REPLACE INTO pre_forum_threadimage (tid,attachment,remote) (SELECT tid,attachment,remote FROM dz72.cdb_attachments WHERE isimage <> 0 and dateline > 1293811200 group by tid); |
这样,数据库最大的3个表就直接通过SQL导入到了X2的表里面,其他的操作按正常升级操作即可,如果页面显示不正常,可以到后台更新下缓存。