免费下载Discuz!NT 3.1 正式版 分流下载 IT下载 站长站 硅谷动力 A5 51aspx 火炬服务岁末特惠,名额有限预购从速! API测试控制台官方演示
V5Shop整合Discuz!NT 3.0.0最新版 Discuz!NT 官方专用虚拟主机 动网用户的福音,后续服务的保障 Discuz!NT新版聚合首页预览

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

[ 37935 查看 / 13 回复 ]

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 操作
分享 转发
看到的去帮我点那个google广告啊www.cnblogs.com/zjneter
TOP

回复: 数据转换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
看到的去帮我点那个google广告啊www.cnblogs.com/zjneter
TOP

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

3 转换后会员数显示不正确的解决办法 分析: 这个是由于某种原因导致统计过程中没有将正确的值写入dnt_statistics表 解决办法如下:
  1. select count(*) from dnt_users
  2. 假设 结果是 1000
复制代码
然后:
  1. update dnt_statistics set totalusers=1000
复制代码
看到的去帮我点那个google广告啊www.cnblogs.com/zjneter
TOP

回复: 【禁回此贴】数据转换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
看到的去帮我点那个google广告啊www.cnblogs.com/zjneter
TOP

回复: 【禁回此贴】数据转换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被设为论坛创始人.
看到的去帮我点那个google广告啊www.cnblogs.com/zjneter
TOP

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

6 问题:附件相关问题 解决: 1 确保原动网附件目录uploadfile 整体移动到DNT论坛的upload目录下           2 后台 Discuz!NT选项->论坛功能->开启动网UBB代码兼容模式
最后编辑戏水 最后编辑于 2007-04-20 17:25:54
看到的去帮我点那个google广告啊www.cnblogs.com/zjneter
TOP

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

7 问题: 发帖正常 ,但是编辑某个帖子的时候出错     解答: 可能的原因是该帖所属的用户在用户表(dnt_users)中不存在了,如果确定是该原因请手工修改数据库.
看到的去帮我点那个google广告啊www.cnblogs.com/zjneter
TOP

回复:【禁回此贴】数据转换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
复制代码
最后编辑戏水 最后编辑于 2007-06-01 10:47:40
看到的去帮我点那个google广告啊www.cnblogs.com/zjneter
TOP

回复:【禁回此贴】数据转换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
看到的去帮我点那个google广告啊www.cnblogs.com/zjneter
TOP

回复: 【禁回此贴】数据转换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
复制代码
看到的去帮我点那个google广告啊www.cnblogs.com/zjneter
TOP