Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

数据表损坏和丢失的解决方法图文详解

[复制链接]
紫琼 发表于 2007-4-25 14:39:27 | 显示全部楼层 |阅读模式
数据表损坏有很多种情况,下面我将分三种情况为大家做一下讲解:

(一)cdb_sessions表损坏或丢失,需要重建


session 表是内存表,记录在线会员信息的,是即时读写的,所以它损坏时可以重建,遇到类似下面的错误时你只需重建这个表即可,用修复无效。


      常见错误举例:
____________________________________________________________________

There seems to have been a problem with the database of your Discuz! Board

Discuz! info: MySQL Query Error

Time: 2006-7-13 9:35pm
Script: /bbs/viewpro.php

SQL: DELETE FROM cdb_sessions WHERE sid='2o3tkl' OR lastactivity<(1152797706-900) OR ('0'<>'0' AND uid='0') OR (uid='0' AND ip1='202' AND ip2='160' AND ip3='180' AND ip4='40' AND lastactivity>1152797706-60)
Error: Table 'cdb_sessions' doesn't exist
数据表缺失,请恢复备份数据

Please check-up your MySQL server and forum scripts, similar errors will not be reported again in recent 24 hours
If you have troubles in solving this problem, please visit Discuz! Community http://www.Discuz.net.
__________________________________________________________________

Discuz! info: MySQL Query Error

User: tiger21
Time: 2006-7-16 1:47am
Script: /index.php

SQL: INSERT INTO cdb_sessions (sid,ip1, groupid, styleid, lastactivity, action, fid )
VALUES ('qFPkDG','000' ,'1', '1','1152985061','2','95')
Error: Duplicate entry 'qFPkDG' for key 1
Errno.: 1062

An error report has been dispatched to our administrator.

   
重建 cdb_sessions 表的方法和过程:


1、打开论坛安装包的 \upload\install 目录,找到 discuz.sql 文件打开,复制其中有关 cdb_sessions 表的内容;如图 1 所示:




2、打开 phpmyadmin,点 “SQL” 菜单,将上面复制的内容粘贴,执行即可。如图2所示:




cdb_sessions 重建完成,打开论坛可以看到论坛显示正常。


    注:其他数据表损坏请慎用重建数据表的方法,重建数据表后该数据表的资料将完全遗失,其他数据表损坏请先恢复数据表,并时常对您的论坛进行备份数据,以便出现数据表丢失错误时可以及时恢复。


(二)数据表损坏,需要修复数据表

错误举例:
Discuz! info: MySQL Query Error

User: lovegogo
Time: 2006-8-9 9:19am
Script: /admincp.php

SQL: SELECT * FROM cdb_memberfields LIMIT 68100, 300
Error: Got error 127 from table handler
Errno.: 1030

Similar error report has beed dispatched to administrator before.

由于 MySQL 本身的读写及锁定机制等方面的原因,与一些其他数据库软件一样,在特殊情况下的极为频繁读写时,或在服务器掉电、死机等情况下,相关的数据文件可能会发生被损坏的情况,通常可以采用以下的方式加以解决。

1、tools.php 修复工具

使用方法:
Discuz!5.5 安装包的 ./utilities 目录下找到 tools.php文件, tools.php 文件上传到论坛根目录下,如图 3 所示:


打开 tools.php 文件,在文件头部找到
$tool_password = ''; //请您设置一个工具包的高强度密码,不能为空!

在这里设置该工具包的密码,注意不能为空!例如图 4 所示:




如果未设置密码则访问该文件如图 5 所示:



在浏览器中如下运行该文件:http://你的论坛地址/tools.php ,如图 6 所示提示输入密码:



输入密码后进入该系统如图 7 所示:



点击“检查或修复 Discuz! 数据库”,如图 8 所示:




点击“检查并尝试修复数据库1次”,检查结果如图 9 所示:



也可以点击“检查并尝试修复数据库5次”,确保数据库修复完全。


2
、myisamchk 修复工具


MySQL 自带了专门用户数据表检查和修复的工具—— myisamchk,当 repair.php 多次修复均无法成功时,可以在服务器终端使用 myisamchk 进行修复。


    常用的修复命令为 myisamchk -r 数据文件目录/数据表名.MYI,如果 -r 参数不能奏效,可以先把数据文件备份(备份可使用直接文件复制的方式,详见《数据备份与恢复》中的说明)后使用 -o 参数,如果 -o 还不可以的话,就使用 -f 参数,如果还是无法修复,只有使用你的备份文件来恢复数据了。

    具体修复过程:

   (1)在“运行-cmd”下更改当前目录到 mysql/bin 下面并关闭 MySQL 数据库;
如图 10 所示:



   (2)执行 myisamchk -r E:/Database/bbs1/*.MYI;
(E:/Database/bbs1为你论坛数据库的存放路径)

如图 11 所示:



执行成功如图 12 所示:


   
(3)启动MySQL数据库。如图 13 所示:



数据表修复成功,您可以继续开启你的网站运行了!


下面给的一个是linux下面的修复方法,和上面的基本相同.只是linux下面关闭和启动mysql的方法和windows的不同.一般情况下linux

  1. /etc/init.d/mysql stop service mysqld stop /etc/init.d/mysql start service mysqld start
复制代码

来关闭和启动mysql,如图 14 所示:



3、数据表经常性损坏的解决方法


首先请确认在服务器硬件不存在问题(如内存工作不稳定、散热条件不好等),且使用中的操作系统版本也没有相关的 BUG 报告或升级补丁。这种情况下,如果数据库仍出现经常性的损坏,请检查是否 MySQL 的编译方式或参数存在问题。通常情况下使用官方提供的编译好的版本是比较稳定的,可以长期使用。如果您钟爱自行编译相关程序,请确认您的语言编译器(如 gcc)和配置的相关参数没有导致不稳定的因素。同时,磁盘分区满也可能是导致数据表经常性损坏的原因。网上提供了一些问题的处理方法(英文),需要时可多参考,并针对您的具体服务器环境制定解决方案。

(三)  数据表丢失,需要恢复数据

    出现类似这种错误 Error: Table 'bbs.cdb_threads' doesn't exist
,此时数据表已经丢失了,无法修复,只能恢复备份数据,所以请时常对您的论坛数据进行备份,以便出现数据表丢失错误时可以及时恢复。


如果你是在后台做的备份,数据量不是很大,使用后台“资料恢复”即可恢复数据;如果你的数据量很大,建议使用restore.php进行恢复。

注:具体论坛的备份和恢复方法在“
论坛搬家详解”里有详细的说明。




[ 本帖最后由 紫琼 于 2007-4-25 14:53 编辑 ]

评分

5

查看全部评分

SystemMessage 发表于 2007-4-25 16:40:20 | 显示全部楼层
沙发支持~~~~!
回复

使用道具 举报

sonocc 发表于 2007-4-25 17:59:10 | 显示全部楼层
不错,长见识啊!!支持!!


[ 本帖最后由 sonocc 于 2007-4-25 20:03 编辑 ]
回复

使用道具 举报

pc77maikongjian 发表于 2007-4-26 13:25:08 | 显示全部楼层
学习学习再学习
回复

使用道具 举报

58458314 发表于 2007-4-26 21:37:13 | 显示全部楼层
那么我现在出现的这个问题 怎么处理啊  大大  555

论坛前太一切正常  后页 就只有 论坛联盟 一点提交 就出现

  1. Discuz! info: MySQL Query Error

  2. User: 管理员的名字
  3. Time: 2007-4-26 9:25pm
  4. Script: /bbs/admincp.php

  5. SQL: UPDATE [Table]forumlinks SET displayorder='0', name='Discuz! ????', url='http://www.discuz.com', note='', logo='images/logo.gif' WHERE id='1'
  6. Error: Unknown column 'note' in 'field list'
  7. 程序文件跟数据库有冲突,请使用正确的程序文件上传上去覆盖

  8. Similar error report has beed dispatched to administrator before.
复制代码


的 错误  这个要怎么恢复啊 使用TOOLS.PHP 也检测不到什么错误 55555555555
回复

使用道具 举报

高宸 发表于 2007-4-28 23:53:57 | 显示全部楼层
不错 顶了 谢谢
回复

使用道具 举报

高宸 发表于 2007-4-28 23:54:37 | 显示全部楼层
郁闷了 我要发问题 不能发帖子
回复

使用道具 举报

clinch 发表于 2007-4-30 01:59:12 | 显示全部楼层
刚好需要!!:)
回复

使用道具 举报

998w 发表于 2007-5-2 15:19:58 | 显示全部楼层
出现这个错误按上面的方法不能解决
Discuz! info: MySQL Query Error

User: ***
Time: 2007-5-2 2:16pm
Script: /admincp.php

SQL: DROP TABLE IF EXISTS [Table]regcode
Error: Unknown table '[Table]regcode'
Errno.: 1051
回复

使用道具 举报

AgFx 发表于 2007-5-3 02:32:27 | 显示全部楼层

回复 #9 998w 的帖子

您要删除regcode的数据表吗?
regcode已经不存在了。:)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-24 07:38 , Processed in 0.031941 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表