论坛转换网's Archiver

xzqt 发表于 2008-2-24 10:30

版块栏目ID如何重新排序

删除了很多栏目,而这些删除的栏目ID就空着了,我想把所有栏目重新从1开始连续排序,找回浪费掉的版块ID。当然同时得把后面多余的ID也删除,让重新建立的栏目接着排序。

白乐天 发表于 2008-2-24 10:34

举一反三,试着参考主题重置的语句自己写。遇到问题我可以给你挑错。

xzqt 发表于 2008-2-24 11:12

[code]ALTER TABLE `pw_forums` ADD `oldfid` MEDIUMINT UNSIGNED NOT NULL[/code][code]update pw_forums set oldfid=fid[/code][code]ALTER TABLE `pw_forums` DROP `fid`[/code][code]ALTER TABLE `pw_forums` ADD `fid` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST [/code]后面怎么搞?

白乐天 发表于 2008-2-24 16:58

依次执行以下10句话,可以把版块重新排序。

执行之前一定作好数据备份,发现问题就恢复,不保证一定成功。
[quote]ALTER TABLE `pw_forums` ADD `oldfid` smallint(6) UNSIGNED NOT NULL [/quote]
[quote]update pw_forums set oldfid=fid[/quote]
[quote]ALTER TABLE `pw_forums` DROP `fid` [/quote]
[quote]ALTER TABLE `pw_forums` ADD `fid` smallint(6) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST [/quote]
[quote]update pw_forums f1,pw_forums f2 set f1.fup=f2.fid where f1.fup=f2.oldfid and f1.fup<>0[/quote]
[quote]update pw_forumdata fd,pw_forums f set fd.fid = f.fid where fd.fid=f.oldfid[/quote]
[quote]update pw_attachs a,pw_forums f set a.fid = f.fid where a.fid=f.oldfid[/quote]
[quote]update pw_posts p,pw_forums f set p.fid = f.fid where p.fid=f.oldfid[/quote]
[quote]update pw_threads t,pw_forums f set t.fid = f.fid where t.fid=f.oldfid[/quote]
[quote]ALTER TABLE `pw_forums` DROP `oldfid` [/quote]

xzqt 发表于 2008-2-24 19:18

多谢老大。真的万分感谢

哆嗦 发表于 2008-2-27 23:26

感谢 白乐天 的帮助!:handshake

梦心灵 发表于 2008-3-25 16:56

我按照上面操作版块是好了但是帖子却没有 麻烦帮忙一下行吗

白乐天 发表于 2008-3-25 22:15

帖子丢失了?给我地址看看。

梦心灵 发表于 2008-3-26 20:27

白乐天 发表于 2008-3-26 20:39

看到了,这是因为你的fid已经超出了smallint的范围了

执行之前一定作好数据备份,发现问题就恢复,不保证一定成功。
[quote]ALTER TABLE `pw_forums` ADD `oldfid` int(10) UNSIGNED NOT NULL [/quote]
[quote]update pw_forums set oldfid=fid[/quote]
[quote]ALTER TABLE `pw_forums` DROP `fid` [/quote]
[quote]ALTER TABLE `pw_forums` ADD `fid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST [/quote]
[quote]update pw_forums f1,pw_forums f2 set f1.fup=f2.fid where f1.fup=f2.oldfid and f1.fup<>0[/quote]
[quote]update pw_forumdata fd,pw_forums f set fd.fid = f.fid where fd.fid=f.oldfid[/quote]
[quote]update pw_attachs a,pw_forums f set a.fid = f.fid where a.fid=f.oldfid[/quote]
[quote]update pw_posts p,pw_forums f set p.fid = f.fid where p.fid=f.oldfid[/quote]
[quote]update pw_threads t,pw_forums f set t.fid = f.fid where t.fid=f.oldfid[/quote]
[quote]ALTER TABLE `pw_forums` DROP `oldfid` [/quote]

梦心灵 发表于 2008-3-26 22:49

感谢 白乐天 的帮助 解决了 小妹谢谢咯:handshake :)

hzyllt 发表于 2008-5-24 23:14

具体怎么操作?修改那个文件?请管理员简单说下好么~`

Godboss 发表于 2009-4-1 22:56

我是 Discuz 7。0论坛 应该如何操作
谢谢

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.