自己辩论与维护MySQL数据库表的操作流程,教你修复mysql数据库的方法必发88手机客户端

2) 在始发修复在此以前对表文件举办拷贝,防止万一。

myisamchk -r tbl_name
isamchk -r tbl_name

它做一个完全深透的多少检查(-e意思是“扩充检查”)。它对每一行做每种键的读检查以证实他们的确指向正确的行。那在贰个有好多键的大表上可能花相当短日子。myisamchk日常将要它开掘第二个谬误以往结束。假设你想要得到更加多的音信,你能充实–verbose(-v)选项。那使得
myisamchk或isamchk继续一直到最多二十一个错误。在相似选取中,四个简易的正儿八经济检察查(未有除表名以外的参数)就足足了。

1) 检查出错的表。假诺该表检查通过,则变成职责,不然必须修复它。

运作后张开test.txt就足以见到了. 
  
**1、myisamchk

正式的不二等秘书技术检查查表

5) 再试试规范表修

唯有描述文件也毁掉了,你才应该达到这么些等级。那应该未有发生过,因为在表被创造今后,描述文件就不再改动了。

只检查上一次检查后被改变的表

在开端试验在此之前应先仔细地阅读本章的内容。特别是不应该在读书“幸免与MySQL数据库表服务器交互成效”在此以前开始展览操作,因为它将探究当您盘算在二个表上实行检查或修复进度时服务器正在选用这么些表所引起的难题。它还研究哪边在服务器运维时卫戍那多少个难点发出。

◆ 把数据文件移更安全的地方。再把数据库目录中的对应的目录删去.。

◆ 倘令你不在数据库目录下,你可内定目录的门路:

% myisamchk –safe-recover tbl_name

◆ 把数据文件移更安全的地点。

留意 
不论是myisamchk依然isamchk都畸形表所在的岗位做别的判定,由此,应该依旧在包蕴表文件的目录运维程序,大概钦点表的路径名。这允许你将表文件拷贝到另叁个索引中并用该拷贝举办操作。

以下的篇章首要向大家讲述的是不错检查与爱惜MySQL数据库表的实操流程,以及在自己评论与保卫安全MySQL数据库表的实操中值得大家大家留意的事项的具体讲述,望你在浏览之后会有着收获。


退出mysql,将原本的数据文件和目录文件移回到数据库的目录中,替换刚才新建的文件。

myisamchk -e tbl_nameisamchk -e tbl_name

要是标准的修复进度未能修复表,则索引文件也许在修补时丢失或破坏。就算未必大概,但还是有相当的大希望使表的描述文件丢失。不论哪种情景,都要求替换受影响的文件,然后再试试典型修复进度。

◆ 意外的文件截至。


仔细翻阅本章内容今后再进行操作,尤其是不应有在阅读“防止与MySQL服务器交互成效”在此之前开始展览操作。因为,在你未曾丰硕的学识在此以前贸然操作,大概会唤起严重的结局。

假定myisamchk 或isamchk 由于八个“C a n’t create new temp file:
file_name” 的荒唐音讯在任何一步中甘休,应该再度那些命令并扩展–force
选项以强迫清除有的时候文件。那些不常文件大概是从上贰次战败的修补中留给的。

笔者提示:无论是 myisamchk 依旧 mysqlcheck ,一般景况下毫不采纳 -f
强制修复,-f
参数会在碰到一般修复不可能得逞的时候删除部分出错数据以尝试修复。所以,不到万不得已不要接纳-f。

◆ 初叶修复数据库表。

检查表

比方修复太快看不到结果,可以运维
mysqlcheck -A -o -r -uroot -p888888 >>C:\test.txt

完全深透的数目检查

为了修补叁个表,实践下列步骤:

◆ 不能找到文件“tbl_name.MYI”(Errcode :### )。

◆ 倘使修复退步,从数据库的备份或更新日志中回复数据。
在运用myisamchk或isamchk检查或修复表在此以前,应该率先注意:

2)
将该表的数据文件移动到安全的地方。假如想要使用索引的话,还需将索引文件移走。

3.运行:mysqlcheck -A -o -r -uroot -p888888
小心,将888888改成你和睦的root用户密码

myisamchk -e -i tbl_name

% myisamchk *.ISM 不得法─文件类型错

*  使用 mysqlcheck 不要求终止 MySQL ,能够开始展览热修复。操作步骤如下:
  
># mysqlcheck -r discuz.\

数据库表的保证工具

5) 再尝试标准表修复方法。

为了修补贰个表施行下列步骤:

1.-i或—information 打字与印刷总括新闻,比如:

为了重新生成索引文件,能够动用下列进度:

**2、mysqlcheck


你依然足以经过为MySQL数据目录的路线钦定贰个通配符来效率于具备的数据库中的全体表:

4) 假若修复操作失利,从数据库备份和创新日志中回复此表。

shell> myisamchk *.MYIshell>isamchk *.ISM

MySQL(和PHP搭配之最佳结合)的myisamchk 和isamchk
实用程序很类似,大多时候它们得以用一样的格局选拔。它们中间的重中之重区别是它们所利用的表的种类。对于MyISAM
表,使用my i s a m c h k,而对于ISAM 表,则选取i s a m c h
k。您能够经过表的目录文件的扩充名来告诉表使用哪个种类存款和储蓄格式。扩大名“. M Y
I”表明是一个MyISAM 表,而“. I S M”申明是ISAM 表。


假诺难题依旧存在,则忽略–quick选项,允许修复程序修改数据文件,因为那恐怕存在难点。上面包车型地铁通令将从数据文件中除去不得法的记录和已被删除的记录一视同仁建索引文件:

◆ 在始发修复在此以前对表文件举行拷贝,以保险数据的安全。

如上的连带内容正是对检查和珍贵MySQL数据库表的牵线,望你能具备收获。

我常用那样的代码,直接放到mysql数据库目录里面

为了施行扩张检查,使用–extend-check或-e选项,这些选项检查数据:

◆ 调用mysql并发复CREATE TABLE语句建构该表。

一旦对于–extend-check检查不报告错误,则能够分明表是一体化的。要是您仍旧认为表相当,这原因明确在其余省方。应重新检讨人和相近有失水准的询问以证实查询是科学书写的。固然您以为难题或许是MySQL服务器的原故,应该思量整理一份故障报告依然进级到新的版本上。
恐怕有效的反省选项:

3) 试着修复表。

◆ 定位到含有崩溃表的数据库目录中

2.-C, –check-only-changed

在修复表此前拷贝它们在施行表修复前应有遵守的一个健康的防范措施是做该表的新拷贝。这种情状未必现身,但假设产生,则能够从拷贝文件中做该表的新的正片并箭在弦上另一种復苏措施。

一张损坏的表的病症经常是询问意外中断并且你能看出诸如这几个错误:

以此办法不可能在windows平台下采用。

2) 要是难点仍存在,再试一下上一步的指令,但忽略–quick 选项,以允许my i
s a m c h k或isamchk 前进并修改数据文件:

**  使用 myisamchk 必须一时休息 MySQL 服务器。举个例子,我们要检查和修理 discuz
数据库。试行以下操作:

◆ 创设数据库备份和使用更新日志,防止止改正主义复退步,丢失数据。

为了利用任贰个实用程序,应指明您所要检查或修复的表,以及指明要实施的操作类型的选项:


假若前边的步调退步,使用。安全苏醒形式使用二个老的复原措施,处理平常恢复生机方式不行的个别情形(然而越来越慢)。

即使你愿意,你能够在指令行命名多少个表。

2) 将该表的数据文件移到平安的地方。

会mysql的爱侣都掌握mysql在长日子使用现在数据库会合世一些标题,那就必要飞速修复损坏mysql数据库以利于我们的行事和学习。下边我为大家下边介绍二种高效检修MySQL 数据库的办法。

高级中学档档案的次序的反省比不上扩张检查深透,但速度快一些。其意义非常小,较少使用。

myisamchk 和isamchk
提供了表检查措施,这个方法在根本检查表的水准方面有出入。平常用职业措施就足足了。要是标准检查报告未有开采错误而你依然思疑有破坏恐怕因为查询未有健康地干活),也许要施行更通透到底的自己商量。要想用任意一个实用程序试行正式的表检查,则不用带别的选取间接调用就可以:

一部分时候因为掉电只怕其余原因促成数据库损坏,大家能够利用mysql自带的mysqlcheck命令来十分的快修复全体的数据库也许特定的数据库;举例
自己顶牛优化并修复全体的数据库用:

你也许在选用MySQL进度中,各个意料之外导致数据库表的毁坏,而且这一个数据往往是风靡的数码,日常不恐怕在备份数据中找到。本章将讲述怎样检验MySQL数据库表的故障。

不会因为告诉了不当的先后来检查有个别表而使该表毁坏,不过除此而外发布一条警告音信外此程序不做其他专门的工作。举例,上边包车型客车首先条语句将检查当前目录中的全数MyISAM
表,而第二条语句只显示一条警告消息:

注意!

非凡的景色是,MySQL(和PHP搭配之最好组合)从第四回安装以来始终牢固地运维。但不经常的确会由于各个缘由而产出难点,其范围能够从电源断电到硬件故障到不平时地关闭MySQL(和PHP搭配之最好组合)服务器如用kill
-9终止服务器或机器崩溃)。

◆ 使用表描述文件创立新的(空)数据和目录文件:


检查出错的表。借使该表检查通过,则成功职分,不然必须修复出错的数据库表。

4)
退出MySQL(和PHP搭配之最好组合),将原本数据文件移回数据库目录中,替换刚才新建的数据文件。借使在步骤2平移了目录文件,则也要将其移回数据库目录中。

忙碌的整修

检查数据库表

  1. 实行规范的表修复

shell> mysql db_namemysql> DELETE FROM tbl_name;mysql> quit

shell>myisamchk options tbl_nameshell>isamchk options tbl_name

% isamchk –recover tbl_name

以下是互补:

MySQL的myisanchk和isamchk实用程序很周围,基本上它们具有一样的使用办法。它们之间的第一不一样时所利用的表的项目。为了检查
/修复MyISAM表(.MYI和.MYD),你应该接纳myisamchk实用程序。为了检查/修复ISAM表(.ISM和.ISD),你应当使用
isamchk实用程序。

在使用myisamchk 或isamchk 检查或修复表在此以前,应该满足一些起初需要:

至极艰巨的修复

◆ 借让你在Unix平台上对表进行珍爱时,应该率先注册到专项使用的帐户
mysql,以制止对表读写访问爆发全体权的题目,以及破坏数据库目录的富有权限。

% isamchk –safe-recover tbl_name

从贰个备份苏醒描述文件同一时候回到阶段2。你也得以回复索引文件同一时间回到阶段1。对于后者,你应有用myisamchk
-r运营。

shell> myisamchk options /path/to/database_dir/*.MYIshell>
isamchk options  /path/to/database_dir/*.ISM

修复表

myisamchk -r -q tbl_name
isamchk -r -q tbl_name

◆ 你也能钦命二个名字作为一个目录文件(用“
.MYI”或“.ISM”后缀),它同意你通过行使形式“*.MYI”或“.ISM”钦定在一个索引全部的表。举个例子,如若你在二个数据库目录,你可以这么在目录下检查有着的表:

% isamchk options tbl_name…

2.进入Mysql的Bin目录:E:\Program Files\MySQL\MySQL Server
5.0\bin,借使不晓得怎么着进入其余目录,将要参谋网络的资料补习基础知识了.
大面积方式:
运行 E:
运行 CD “E:\Program Files\MySQL\MySQL Server 5.0\bin”

那能寻找全数错误的99.99%。它无法寻觅的是只是涉及数据文件的毁损(那很不广泛)。

3) 如若还不干活,试一试–safe-recover
修复方法。这种方法比日常的回复措施要慢,但亦可改良-recover
方法无法改进的多少个难题:

jb51_tablename是jb51_tablename.MYD的名目。运营以下就足以了。

一般说来用标准的点子就足足了。对表使用专门的学业的主意开始展览检讨,不使用其余选用直接调用就能够,或用-s或–silent选项的其余二个:

3)
调用MySQL(和PHP搭配之最棒组合)并经过进行下列语句再一次创造新的空表,该语句使用表的描述文件tbl_name.frm
重新初叶生成新的多寡和目录文件:


将老的数据文件拷贝到新创制的数据文件之中。(不要只是将老文件移回新文件之中;你要封存三个别本防止有些事物出错。)

shell> myisamchk options /path/to/datadir/*/*.MYIshell> isamchk
options /path/to/database_dir/*/*.ISM

MySQL(和PHP搭配之最棒结合)> DELETE FROM tbl_name;

在修复进程中,要是看到有error的唤起,注明这一个表是坏的,不可能修复的,对于富含坏表的的数据库,您不得不删除它,或甘休它,不然会影响总体Mysql的安身立命,产生mysql自动甘休.(提醒”The
storage engine for the table doesn’t support repair”的表无需管理)


为了利用任叁个采纳程序,应指明你要反省或修复的表,myisamchk和isamchk的使用方法为:

表的修补是一项可怕的行事,若是实际难题非常特出则更难张开。然则,有局部平日化的辅导观念和进度,能够遵从它们来充实校正表的机遇。平时,起初时可以用最快的修补方法,看看是否能订正故障。借使发掘那多少个的话,可以逐步升高到更彻底的但越来越慢的)修复方法上,直到故障被修复或你不能够接二连三升高完成实际上,大许多标题毫不更加大局面包车型客车和更加慢的点子就能够核对)。假使表无法修补,则从备份中回复该表。有关使用备份文件和换代日志举行回复的点拨在已第11章中提交。

复制代码 代码如下:

中档水平的自己批评

树立不荒谬的数据库备份进程并允许更新日志,防止事情更是糟使表的破坏无法修补。小编好像在在此以前提醒过那点?

cmd /k myisamchk -r jb51_tablename

表的故障检查评定和勘误的相似经过如下:


然后回去阶段2,修复表。也得以只移回数据文件,那样保留新的叙述和目录文件,然后回到阶段1,继续用标准的章程修复表。

点名选项–medium-check或-m

1) 定位到含有崩溃表的数据库目录中。

  myisamchk 会自动物检疫查并修复数据表中的目录错误。

myisamchk -m tbl_name

% myisamchk tbl_name

◆ 从表管理器的获取错误###(此时,错误135是三个差异)。

象前边的指令同样,可是-i选项告诉myisamchk还打字与印刷出某些计算音讯。

  1. 标准表修复方法战败时咋办

在这个意况下,你不可能不修复表。表的修复是一项极其困难的行事,好些个场合下令人焦头烂额。但是,有部分健康的敞亮观念和进度,能够依据它们来增添勘误表的机遇。日常,起首是足以用最快的修复方法,看看是不是迷你故障。若是开掘不成事,可以稳步晋级到更干净的但越来越慢的修补方法。如果照旧难以修复,就应当从备份中平复了。在上一章早已详细介绍了这一有的剧情。

myisamchk和isamchk提供了表的检查办法,这几个方法在根本检查表的档案的次序方面有出入。

% myisamchk options *.MYI

简短安全的修复

myisamchk tbl_nameisamchk tbl_name

tbl_name
参数可以是表名也得以是该表的目录文件名。假如钦命四个表,能够很轻便地利用文件超级模特式来拾取目录中有着相应的公文:

上述语句将再次创造新的空表,并使用表的的描述文件tbl_name.frm重新生成新的数目和目录文件。

表的故障检查测试和考订的相似经过如下:

% isamchk tbl_name

◆ 定位到含有崩溃表的数据库目录中

4)
退出MySQL(和PHP搭配之最棒结合),将原有的数据文件移回到数据库目录中,替换刚创建的新的空文件。

myisamchk –safe-recover tbl_name
isamchk –safe-recover tbl_name

% isamchk options *.ISM

倘若在目录文件的率先个16K块被毁坏,或含有不科学的新闻,或只要索引文件丢失,你只应该到这些阶段
。在这种状态下,创立二个新的目录文件是少不了的。按如下那样的步骤做:

举个例子那样的气象超过二分之一都超过你的主宰范围,它们会促成数据库表的毁坏,非常是在对表进行改换且未完全写入时所引起的。

假定你具有表的备份文件,那么一切经过就便于的多。从备份文件中得以回复表的讲述文件,然后在检查表,有十分大希望还要持续使用规范的修复方法,应该纠能够化解难题了。

上述进度的结尾一步假定你已经举行了数据库备份并同意更新日志有效。纵然不是那样的话,系统将有危急。参谋第11章查找一下怎么样利用MySQL(和PHP搭配之最好组合)aump
和怎样开启更新日志。您断定不想不可挽留地不见三个表,因而,应着力地做备份。

◆ 记录文件被毁坏。

为了执行扩张检查,使用–extend-check
选项。该选项一点也非常的慢,但检查极为彻底。对于该表的数据文件中的每一种记录,索引文件中的种种索引的相关键都被检查以保险它实在指向正确的记录。myisamchk
还应该有多少个中档选项- – m e d i um – c h e c
k,它不比增添检查深透,但速度快。

假定因为某种原因,数据的备份文件丢失恐怕尚未备份文件,然则你还记得建设构造表的CREATE
TABLE语句,那么太好了,那样依然得以还原索引文件:

一旦myisamchk 或isamchk 报告表有错误,应用下节中的表明修复它们。

1.先在运行中输入CMD,运维命令行.

为了还原该表的叙述文件,可先从备份文件中复苏,然后再试着用标准修复方法。假设由于有个别原因尚未备份,但敞亮创立表的CREATE
TABLE 语句,则仍是可以过来该公文:

复制代码 代码如下:

1) 定位到含有崩溃表的数据库目录中。

mysql.columns_priv                 OK
mysql.db                      OK
mysql.func                     OK
mysql.help_category                OK
mysql.help_keyword                 OK
mysql.help_relation                OK
mysql.help_topic                  OK
mysql.host                     OK
mysql.tables_priv                 OK
mysql.time_zone                  OK
mysql.time_zone_leap_second            OK
mysql.time_zone_name                OK
mysql.time_zone_transition             OK
mysql.time_zone_transition_type          OK
mysql.user                     OK
……
……
……

myisamchk 和isamchk 提供的整个摘取的清单在附录E
中。有关任何的背景,请参阅MySQL(和PHP搭配之最棒结合)仿照效法指南的“维护MySQL(和PHP搭配之最好组合)安装”一章。

◆ 在选拔正式的修复方法。今后myisamchk -r
-q应该专门的学业了。(那不应该是二个极致循环)。

% isamchk –recover –quick tbl_name


首先,用–recover,-r选项纠正表,并且用–quick,-q选项,来只依据目录文件的剧情张开回复。那样不接触数据文件来修复索引文件。(-r表示“苏醒方式”)

1) 试着用–recover 选项校订表,但也得以用–quick
选项试图只依据目录文件的源委张开还原。那样将不接触数据文件:

◆ “tbl_name.frm”被锁定不能够改变。

% myisamchk –recover tbl_name

  # service mysql stop (停止 MySQL );
  # myisamchk -r /数据库文件的绝对路线/*MYI
  # service mysql start

% myisamchk –recover –quick tbl_name

本章的重中之重是检查实验和解决表的难点,而不论难点是怎么样挑起的。对于表的自己研讨和修复,MySQL(和PHP搭配之最好结合)管理员最佳的相恋的人是myisamchk
和isamchk
实用程序。那七个程序有一点点个成效,大家曾经在第4章探究了怎么着使用它们实施索引键的布满深入分析和目录的自由与激活。还足以运用它们检查表和修补有标题标表。那让你能在表变坏此前使表不能够使用以前)勘误故障。

无论是myisamchk 照旧isamchk
都狼狈表所在的职位做别的推断,由此,应该照旧在蕴藏表文件的目录中运营程序,或然钦定表的路线名。那允许你将表文件拷贝到另叁个目录中并用该拷贝实行操作。

当运营表检查或修复时,您应该被注册在运作MySQL(和PHP搭配之最棒结合)的账号下,因为您必要对表文件读写访问。

一旦对于–extend-check
检查不告知错误,则足以分明表是好的。倘令你依旧感到到表有毛病,那原因肯定在别的地点。应重新检讨任何类似有题指标查询以证实查询是情有可原书写的。若是您认为难题只怕是MySQL数据库表服务器的开始和结果,应思考整理一份故障报告或升官到新的版本上。

% myisamchk *.MYI 正确

% myisamchk options tbl_name…

myisamchk 和isamchk 的调用语法

3) 调用MySQL(和PHP搭配之最棒组合)并发布CREATE TABLE 语句创建该表。