<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Java堂 &#187; discuz</title>
	<atom:link href="http://www.javatang.com/archives/tag/discuz/feed" rel="self" type="application/rss+xml" />
	<link>http://www.javatang.com</link>
	<description>Java Tang</description>
	<lastBuildDate>Thu, 08 Dec 2011 08:29:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Discuz!一次误删会员用户组的恢复</title>
		<link>http://www.javatang.com/archives/2008/03/13/5500263.html</link>
		<comments>http://www.javatang.com/archives/2008/03/13/5500263.html#comments</comments>
		<pubDate>Thu, 13 Mar 2008 06:55:00 +0000</pubDate>
		<dc:creator>Jet</dc:creator>
				<category><![CDATA[Web&Server]]></category>
		<category><![CDATA[discuz]]></category>

		<guid isPermaLink="false">http://www.javatang.com/archives/2008/03/13/5500263.html</guid>
		<description><![CDATA[今天上午好友colin电话过来大呼救急，原来他昨天晚上不知为何把Discuz论坛中的会员用户组除了“新手上路”和“注册会员”之外的用户组都删除了，删除之后发现有许多会员出现了异常：有的出现禁言，有的出现未验证等等。 论坛的版本是Discuz 6，首先在后台将论坛暂时关闭，避免因为新的数据而造成更多的冲突。然后使用SQLyog将原来的数据都备份下来，避免操作数据库出现失误之后可以方便恢复数据。上面这两个前期工作非常重要，事实上在后面的一次操作中就将会员数据给破坏掉了，然后使用备份恢复之后又重新进行操作的。 接下来分析Discuz的数据库，首先查找到记录会员用户组的表名为 cdb_usergroups (前缀cdb_为默认的，或许与你的不同)，接下来使用一条查询语句检查一下会员中的group属性： select uid,username,credits,groupid from cdb_members order by groupid desc 结果发现很多会员的groupid还是保留的被删除的会员用户组id，找到了问题的原因之后就好办了。 首先恢复默认的会员用户组的数据，打开Discuz6安装包中的upload/install/discuz.sql文件，找到下面一行 DROP TABLE IF EXISTS cdb_usergroups; 然后将这行连同下面创建表结果及插入默认数据的sql语句复制下来在MySQL中执行，这样就将会员用户组中的数据恢复到了默认状态。 然后就是需要查看会员表(cdb_members)中的groupid是否都存在于会员组中，查看所有的groupid是否都在cdb_usergroups.id的范围之内(1-15)： select uid,username,credits,groupid from cdb_members where groupid&#62;15 order by groupid desc 如果执行之后发现没有数据则表示一切OK了，如果发现有的话则说明肯定添加过新的会员用户组，这个时候需要对会员中的groupid进行整理： update cdb_members set groupid=10 where (credits&#62;0 and credits&#60;50) and groupid&#62;8; update&#160;cdb_members set groupid=11 where (credits&#62;50 and credits&#60;200) and groupid&#62;8; update&#160;cdb_members set [...]]]></description>
			<content:encoded><![CDATA[<p>今天上午好友colin电话过来大呼救急，原来他昨天晚上不知为何把Discuz论坛中的会员用户组除了“新手上路”和“注册会员”之外的用户组都删除了，删除之后发现有许多会员出现了异常：有的出现禁言，有的出现未验证等等。</p>
<p>论坛的版本是Discuz 6，首先在后台将论坛暂时关闭，避免因为新的数据而造成更多的冲突。然后使用<a href="http://www.javatang.com/archives/tag/sqlyog">SQLyog</a>将原来的数据都备份下来，避免操作数据库出现失误之后可以方便恢复数据。上面这两个前期工作非常重要，事实上在后面的一次操作中就将会员数据给破坏掉了，然后使用备份恢复之后又重新进行操作的。</p>
<p>接下来分析Discuz的数据库，首先查找到记录会员用户组的表名为 cdb_usergroups (前缀cdb_为默认的，或许与你的不同)，接下来使用一条查询语句检查一下会员中的group属性：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">uid</span><span style="color: Gray;">,</span><span style="color: Blue;">username</span><span style="color: Gray;">,</span><span style="color: Blue;">credits</span><span style="color: Gray;">,</span><span style="color: Blue;">groupid</span><span style="color: Gray;"> </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">cdb_members</span><span style="color: Gray;"> </span><span style="color: Green;">order</span><span style="color: Gray;"> </span><span style="color: Green;">by</span><span style="color: Gray;"> </span><span style="color: Blue;">groupid</span><span style="color: Gray;"> </span><span style="color: Green;">desc</span></li></ol></div>
<p>结果发现很多会员的groupid还是保留的被删除的会员用户组id，找到了问题的原因之后就好办了。</p>
<p>首先恢复默认的会员用户组的数据，打开Discuz6安装包中的upload/install/discuz.sql文件，找到下面一行</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">DROP</span><span style="color: Gray;"> </span><span style="color: Green;">TABLE</span><span style="color: Gray;"> </span><span style="color: Blue;">IF</span><span style="color: Gray;"> </span><span style="color: #00008b;">EXISTS</span><span style="color: Gray;"> </span><span style="color: Blue;">cdb_usergroups</span><span style="color: Gray;">;</span></li></ol></div>
<p>然后将这行连同下面创建表结果及插入默认数据的sql语句复制下来在MySQL中执行，这样就将会员用户组中的数据恢复到了默认状态。</p>
<p>然后就是需要查看会员表(cdb_members)中的groupid是否都存在于会员组中，查看所有的groupid是否都在cdb_usergroups.id的范围之内(1-15)：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">select</span><span style="color: Gray;"> </span><span style="color: Blue;">uid</span><span style="color: Gray;">,</span><span style="color: Blue;">username</span><span style="color: Gray;">,</span><span style="color: Blue;">credits</span><span style="color: Gray;">,</span><span style="color: Blue;">groupid</span><span style="color: Gray;"> </span><span style="color: Green;">from</span><span style="color: Gray;"> </span><span style="color: Blue;">cdb_members</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Blue;">groupid</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">15</span><span style="color: Gray;"> </span><span style="color: Green;">order</span><span style="color: Gray;"> </span><span style="color: Green;">by</span><span style="color: Gray;"> </span><span style="color: Blue;">groupid</span><span style="color: Gray;"> </span><span style="color: Green;">desc</span></li></ol></div>
<p>如果执行之后发现没有数据则表示一切OK了，如果发现有的话则说明肯定添加过新的会员用户组，这个时候需要对会员中的groupid进行整理：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">update</span><span style="color: Gray;"> </span><span style="color: Blue;">cdb_members</span><span style="color: Gray;"> </span><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">groupid</span><span style="color: Gray;">=</span><span style="color: Maroon;">10</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">credits</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">credits</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">50</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">groupid</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">8</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">update</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">cdb_members</span><span style="color: Gray;"> </span><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">groupid</span><span style="color: Gray;">=</span><span style="color: Maroon;">11</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">credits</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">50</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">credits</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">200</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">groupid</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">8</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">update</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">cdb_members</span><span style="color: Gray;"> </span><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">groupid</span><span style="color: Gray;">=</span><span style="color: Maroon;">12</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">credits</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">200</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">credits</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">500</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">groupid</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">8</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">update</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">cdb_members</span><span style="color: Gray;"> </span><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">groupid</span><span style="color: Gray;">=</span><span style="color: Maroon;">13</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">credits</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">500</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">credits</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">1000</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">groupid</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">8</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">update</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">cdb_members</span><span style="color: Gray;"> </span><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">groupid</span><span style="color: Gray;">=</span><span style="color: Maroon;">14</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">credits</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">1000</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">credits</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">3000</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">groupid</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">8</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">update</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">cdb_members</span><span style="color: Gray;"> </span><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">groupid</span><span style="color: Gray;">=</span><span style="color: Maroon;">15</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">credits</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">3000</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">credits</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">6000</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">groupid</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">8</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">update</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">cdb_members</span><span style="color: Gray;"> </span><span style="color: Green;">set</span><span style="color: Gray;"> </span><span style="color: Blue;">groupid</span><span style="color: Gray;">=</span><span style="color: Maroon;">16</span><span style="color: Gray;"> </span><span style="color: Green;">where</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">credits</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">6000</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">credits</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">999999</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">groupid</span><span style="color: Gray;">&gt;</span><span style="color: Maroon;">8</span><span style="color: Gray;">;</span></li></ol></div>
<p>因为groupid为8以下的都为系统组，不需要进行整理。这样整理之后一切都OK了，重新打开论坛。~~</p>
<div id="crp_related"><h2>Related Posts:</h2><ul><li><a href="http://www.javatang.com/archives/2010/09/07/2623462.html" rel="bookmark" class="crp_title">在Maven中引用jcaptcha出现Missing artifact错误的解决办法</a></li><li><a href="http://www.javatang.com/archives/2011/12/08/2906565.html" rel="bookmark" class="crp_title">MySQL中更新与子查询条件中同一个表中的字段数据</a></li><li><a href="http://www.javatang.com/archives/2006/09/23/542969.html" rel="bookmark" class="crp_title">PHPWind中出现 “Update Error: INSERT LOW_PRIORITY INTO pw_tmsgs ”问题的解决</a></li><li><a href="http://www.javatang.com/archives/2006/05/03/061828.html" rel="bookmark" class="crp_title">密码保护：JDBC操作SQL Server小结</a></li><li><a href="http://www.javatang.com/archives/2006/07/23/342351.html" rel="bookmark" class="crp_title">SQL Server中删除重复数据最快的方法</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.javatang.com/archives/2008/03/13/5500263.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: www.javatang.com @ 2012-02-10 07:36:13 -->
