Discuz!NT

注册

 

QQ登录

只需一步,快速开始

发新话题 回复该主题

【禁回此贴】数据转换FAQ--不断增加中 [复制链接]

1#
1 问题 : 发帖不正常 .
分析: 不一定在转换后才不正常 ,八成是dnt_postid中 pid字段的值出现了错误   dnt_postid 表的pid字段的值决定了您新发帖的子的pid值 所以要想发帖正常 这个值是一定要正确的.
解决办法 :  
这个值应该为 各个分表(dnt_posts1,dnt_posts2 ……) 中最大的pid值
1 可以用下面的语句得到某个分表中最大pid值
  1. select max(pid) from dnt_posts1

复制代码
2 得到了各分表最大pid值 假设为1000
  然后就要更新dnt_postid表中pid字段的值了
    (1)      该字段为主键 且在access版本的dnt中 是自动编号字段 ,可以在access中创建查询 执行如下的sql语句
  1. ALTER TABLE dnt_postid ALTER COLUMN pid COUNTER (1001, 1)

复制代码
然后 将当前时间写入 dnt_postid 表postdatetime字段
     (2)    SQL版中 可以 在查询分析其中运行下面语句
  1. DBCC CHECKIDENT ('dnt_postid', RESEED, 1000)

复制代码
然后删除 dnt_postid中的那条记录 再新增一条, 这时候你会发现pid字段 的值为1000
最后编辑戏水 最后编辑于 2007-10-23 14:03:50
本主题由 开发团队 戏水 于 2008/8/4 10:45:46 执行 delposts 操作
分享 转发
TOP
2#

回复: 数据转换FAQ--不断增加中

2 转换后不能登录问题的解决
转换程序在转换结束后会自动建立 用户名 admin  密码 dntadmin 的管理员帐号.
如有意外原因导致没有建立这个管理员帐号 可以俺下述方法解决
1  确定 dnt_users表中有没有admin用户
    <1> 有
  1. update [dnt_users] set [password]='e8a58197e26b0f6f8bdf378b778251d1',[groupid]=1 where [username]='admin'

复制代码
<2> 无
  1. insert into [dnt_users]([username], [nickname],[password],[secques], [gender], [adminid], [groupid], [groupexpiry], extgroupids,regip, joindate, lastip, lastvisit, lastactivity, lastpost,lastposttitle, posts, digestposts, oltime, pageviews, credits, extcredits1,  extcredits3, extcredits4, avatarshowid, email, bday, sigstatus,templateid, pmsound,  newsletter)

  2. values('admin', '','e8a58197e26b0f6f8bdf378b778251d1', '', 1,  1,1,  0, '', '127.0.0.1',  '2007-01-01 00:00:00',  '127.0.0.1',  '2007-01-01 00:00:00',  '2007-01-01 00:00:00',  '2007-01-01 00:00:00', '' , 0,  0,  0, 0,  0,  0,   0,  0,  0,  '',  '1900-1-1',  1,  0,   1,   1)  

复制代码
观察刚才插入的记录在dnt_users表中的uid是的值,这里假设为1000 那么继续执行sql
  1. insert into dnt_userfields(uid,website,icq,qq,yahoo,msn,skype,location,customstatus,medals,bio,sightml,authstr,signature)

  2. values(1000,'','','','','','','','','','','','','')

复制代码
最后编辑戏水 最后编辑于 2007-03-20 13:34:05
TOP
3#

回复: 数据转换FAQ--不断增加中

3 转换后会员数显示不正确的解决办法

分析: 这个是由于某种原因导致统计过程中没有将正确的值写入dnt_statistics表

解决办法如下:
  1. select count(*) from dnt_users

  2. 假设 结果是 1000

复制代码


然后:

  1. update dnt_statistics set totalusers=1000

复制代码
TOP
4#

回复: 【禁回此贴】数据转换FAQ--不断增加中

4 问题:不能注册新用户
原因:由于dnt_user表中的uid自增字段的起始值错误了. 您可以通过下面的方法解决.

首先取得用户表最大uid值
  1. select max(uid) from dnt_users

复制代码
假设 得到的结果是1000

access版:
在access中,建立查询 ,然后执行下面的sql语句
  1. ALTER TABLE dnt_users ALTER COLUMN uid COUNTER (1001, 1)

复制代码
这里写1001是找一个比当前dnt_users表中最大uid值更大的值

sql版:
在查询分析其中执行下面语句
  1. DBCC CHECKIDENT ('dnt_users', RESEED, 1000)

复制代码
执行完上述操作 请再看一下dnt_userfields表中 确保其中的uid字段的值 和 dnt_users字段的值 相对应
最后编辑戏水 最后编辑于 2007-03-05 14:40:36
TOP
5#

回复: 【禁回此贴】数据转换FAQ--不断增加中

5 问题:设置论坛创始人

   转换后请按下面的步骤设置论坛创始人,此处假设要将用户名为admin的用户设置为论坛创始人

1  执行sql语句
  1. select uid from dnt_users where username='admin'

复制代码


  假设得到的uid的值为1000

2 修改DNT.config文件中<Founderuid>1</Founderuid>配置节 为 <Founderuid>1000</Founderuid>
   如此这般,用户admin被设为论坛创始人.
TOP
6#

回复: 【禁回此贴】数据转换FAQ--不断增加中

6 问题:附件相关问题

解决: 1 确保原动网附件目录uploadfile 整体移动到DNT论坛的upload目录下
          2 后台 Discuz!NT选项->论坛功能->开启动网UBB代码兼容模式
最后编辑戏水 最后编辑于 2007-04-20 17:25:54
TOP
7#

回复: 【禁回此贴】数据转换FAQ--不断增加中

7 问题: 发帖正常 ,但是编辑某个帖子的时候出错
    解答: 可能的原因是该帖所属的用户在用户表(dnt_users)中不存在了,如果确定是该原因请手工修改数据库.
TOP
8#

回复:【禁回此贴】数据转换FAQ--不断增加中

--解决重装系统并还原论坛数据库后,数据库帐号不关联的问题。
--注意请用sa帐号 进行如下操作
--操作之前,确保当前SqlServer中存在和原来数据库所有者同名的帐号

Exec sp_configure 'allow updates',1  --允许更新系统表。
RECONFIGURE WITH OVERRIDE
DECLARE @DBName varchar(50),@UserName varchar(50),@Sql varchar(200)
set @DBName='原数据库名'
set @UserName='原数据库帐号'    
set @Sql=N'update'+@DBName +N'.dbo.sysusers set sid = (select sid from master.dbo.syslogins where name='+quotename(@UserName,'''')+N') where name='+quotename(@UserName,'''')
exec(@Sql)
Exec sp_configure 'allow updates',0  --关闭系统表更新
RECONFIGURE WITH OVERRIDE
/***************************************************/
--例如 您原来数据库被还原后 名为 dntbbs , 该数据库原来的数据库所有者为bill
--请在查询分析器中运行如下代码
  1. Exec sp_configure 'allow updates',1  --允许更新系统表。
  2. RECONFIGURE WITH OVERRIDE
  3. DECLARE @DBName varchar(50),@UserName varchar(50),@Sql varchar(200)
  4. set @DBName='dntbbs'        
  5. set @UserName='bill'    
  6. set @Sql=N'update '+@DBName +N'.dbo.sysusers set sid = (select sid from master.dbo.syslogins where name='+quotename(@UserName,'''')+N') where name='+quotename(@UserName,'''')
  7. exec(@Sql)
  8. Exec sp_configure 'allow updates',0  --关闭系统表更新
  9. RECONFIGURE WITH OVERRIDE
复制代码
最后编辑wysky 最后编辑于 2010-10-20 11:06:58
TOP
9#

回复:【禁回此贴】数据转换FAQ--不断增加中

9 重新统计主题的回复数
  注:可能需要比较长的时间
  1. DECLARE @maxtid int

  2. DECLARE @tid INT

  3. DECLARE @tableid INT

  4. DECLARE @p_id INT

  5. DECLARE @replycount INT

  6. DECLARE @sql VARCHAR(4000)

  7. SET @maxtid =(SELECT MAX(tid) FROM dnt_topics)

  8. SET @tid=0

  9. SET @tableid=0

  10. SET @replycount=0

  11. SET @sql=''

  12. SET @p_id=0



  13. WHILE @tid <= @maxtid

  14. BEGIN



  15.         SET @tableid=(SELECT [id] FROM dnt_tablelist WHERE (mintid<=@tid AND @tid<=maxtid) OR (mintid<=@tid and maxtid=0))

  16.         SET @sql = 'DECLARE @replycount INT;SET @replycount=0;'

  17.         SET @sql=@sql+' SET @replycount=(SELECT count(1) FROM dnt_posts'+ltrim(str(@tableid))+' WHERE tid = '+ltrim(str(@tid))+' AND layer !=0);'

  18.         SET @sql=@sql+' UPDATE dnt_topics SET replies=@replycount WHERE tid = '+ltrim(str(@tid))

  19.         EXEC(@sql)



  20.         SET @tid=@tid+1

  21. END

复制代码
最后编辑戏水 最后编辑于 2007-11-05 17:01:45
TOP
10#

回复: 【禁回此贴】数据转换FAQ--不断增加中

重新统计用户精华帖数

请在SQL Server查询分析器中运行下面的sql语句 (建议做好数据库备份)
  1. UPDATE dnt_users SET digestposts = a.digestcount

  2. FROM (SELECT posterid,count(posterid) AS digestcount FROM dnt_topics WHERE digest <>0 GROUP BY posterid) AS a

  3. WHERE dnt_users.uid=a.posterid

复制代码
TOP
发新话题 回复该主题
站长