mysql 怎么修复表_修复mysql表
也许很多人遇到过类似Can’t open file: ‘[Table]mytable.MYI’ 这样的错误信息,却不知道怎么解决他,下面我们做个介绍,
多数情况下,数据库被破坏只是指索引文件受到了破坏,真正的数据被破坏掉的情况非常少。大多数形式的数据库破坏的的修复相当简单。
和前面的校验一样,修复的方式也有三种。
下面讲的方法只对MyISAM格式的表有效。其他类型的损坏需要从备份中恢复。
1,REPAIR TABLE SQL statement(mysql服务必须处于运行状态)。
2,命令mysqlcheck(mysql服务可以处于运行状态)。
3,命令myisamchk(必须停掉mysql服务,或者所操作的表处于不活动状态)。
在修复表的时候,最好先作一下备份。所以你需要两倍于原始表大小的硬盘空间。请确保在进行修复前你的硬盘空间还没有用完。
1>用”repair table”方式修复 语法:repair table 表名 [选项]
选项如下:
QUICK 用在数据表还没被修改的情况下,速度最快
EXTENDED 试图去恢复每个数据行,会产生一些垃圾数据行,万般无奈的情况下用
USE_FRM 用在.MYI文件丢失或者头部受到破坏的情况下。利用.frm的定义来重建索引
多数情况下,简单得用”repair table tablename”不加选项就可以搞定问题。但是当.MYI文件丢失或者头部受到破坏时,这样的方式不管用,例如:
mysql> REPAIR TABLE mytable;
+————————-+——–+———-+———————————————+
| Table | Op | Msg_type | Msg_text |
+————————-+——–+———-+———————————————+
| sports_results.mytable | repair | error | Can’t find file: ‘mytable.MYI’ (errno: 2) |
+————————-+——–+———-+———————————————+
修复失败的原因时索引文件丢失或者其头部遭到了破坏,为了利用相关定义文件来修复,需要用USE_FRM选项。例如:
mysql> REPAIR TABLE mytable USE_FRM;
+————————-+——–+———-+————————————+
| Table | Op | Msg_type | Msg_text |
+————————-+——–+———-+————————————+
| sports_results.mytable | repair | warning | Number of rows changed from 0 to 2 |
| sports_results.mytable | repair | status | OK |
+————————-+——–+———-+————————————+
我们可以看到Msg_test表项的输出信息”ok”,表名已经成功修复受损表。
2>用mysql内建命令mysqlcheck来修复 当mysql服务在运行时,也可以用mysql内建命令mysqlcheck来修复。
语法:mysqlcheck -r 数据库名 表名 -uuser -ppass
%mysqlcheck -r sports_results mytable -uuser -ppass
sports_results.mytable OK
利用mysqlcheck可以一次性修复多个表。只要在数据库名后列出相应表名即可(用空格隔开)。或者数据库名后不加表名,将会修复数据库中的所有表,例如:
%mysqlcheck -r sports_results mytable events -uuser -ppass
sports_results.mytable OK
sports_results.events OK
%mysqlcheck -r sports_results -uuser -ppass
sports_results.mytable OK
sports_results.events OK
3>用myisamchk修复 用这种方式时,mysql服务必须停掉,或者所操作的表处于不活动状态(选项skip-external-locking没被使用)。记着一定要在相关.MYI文件的路径下或者自己定义其路径。 语法:myisamchk [选项] [表名] 下面是其选项和描述 –backup, -B 在进行修复前作相关表得备份 –correct-checksum 纠正校验和 –data-file-length=#, -D # 重建表时,指定数据文件得最大长度 –extend-check, -e 试图去恢复每个数据行,会产生一些垃圾数据行,万般无奈的情况下用 –force, -f 当遇到文件名相同的.TMD文件时,将其覆盖掉。 keys-used=#, -k # 指定所用的keys可加快处理速度,每个二进制位代表一个key.第一个key为0 –recover, -r 最常用的选项,大多数破坏都可以通过它来修复。如果你的内存足够大,可以增大参数sort_buffer_size的值来加快恢复的速度。但是遇到唯一键由于破坏而不唯一 的表时,这种方式不管用。 –safe-recover -o 最彻底的修复方式,但是比-r方式慢,一般在-r修复失败后才使用。这种方式读出 所有的行,并以行为基础来重建索引。它的硬盘空间需求比-r方式稍微小一点,因 为它没创建分类缓存。你可以增加key_buffer_size的值来加快修复的速度。 –sort-recover, -n mysql用它类分类索引,尽管结果是临时文件会非常大 –character-sets-dir=… 包含字符集设置的目录 –set-character-set=name 为索引定义一个新的字符集 –tmpdir=path, -t 如果你不想用环境变量TMPDIR的值的话,可以自定义临时文件的存放位置 –quick, -q 最快的修复方式,当数据文件没有被修改时用,当存在多键时,第二个-q将会修改 数据文件 –unpack, -u 解开被myisampack打包的文件 myisamchk应用的一个例子 % myisamchk -r mytable - recovering (with keycache) MyISAM-table ‘mytable.MYI’
mysql 怎么修复表_修复mysql表相关推荐
- mysql修复损坏表_在MySQL中,如何修复损坏的表
本指南旨在作为故障排除资源和诊断MySQL设置的起点. 有时,MySQL表损坏,这意味着发生了错误,并且其中的数据无法读取. 损坏表的一些常见原因是:MySQL服务器在写数据的时候停止.外部程序同时修 ...
- mysql 分区表 外键_【MySQL】表分区
MySQL表分区是MySQL提供的一种简单的数据表水平拆分方法. 分区表是一个逻辑表,它由多个物理子表组成. 目前只有 InnoDB 和 NDB 正式支持表分区. 注:表分区虽然可以缓解单表数据量过大 ...
- 如何用mysql创建orders表_《MySQL必知必会》学习笔记
本书所用的表: 68.png 67.png 66.png 65.png 64.png 63.png 第一章:了解SQL 数据库:保存有组织的数据的容器(通常是一个文件或一组文件). 数据库软件:DBM ...
- mysql 截断表_入门MySQL——基础语句篇
前言: 前面几篇文章,我们介绍了MySQL的基础概念及逻辑架构.相信你现在应该有了自己的一套MySQL环境,接下来我们就可以开始练习MySQL了.本文将从MySQL最基础的语句出发,为你展示出创建及修 ...
- mysql auto_increment建表_在mysql表中创建一个ID auto_increment(在事实之后)
小编典典 例如,这是一个具有主键但不是的表AUTO_INCREMENT: mysql> CREATE TABLE foo ( id INT NOT NULL, PRIMARY KEY (id) ...
- mysql交互式创建表_用mysql语句创建数据表详细教程
MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 一般有两种创建表的方法: 1.使用具有交互式创建和管理表的工具: 2.表也可以直接用MySQL语句操纵. ...
- Mysql商品和图片表_【mysql】数据库设计模式:多个图片怎么和商品关联
比如发布商品,标题,单价,属性- 还有一个产品图片,而产品图片一般是选择图片后就上传了图片,这时候产品应该入库啦,这时候还不知道这个商品ID,这样怎么关联商品? 如果是提交后修改,这时候知道了商品ID ...
- mysql bench建立一张表_使用MySQL Workbench建立数据库,建立新的表,向表中添加数据...
点击上图中的"加号"图标,新建一个连接, 如上图,先输入数据库的账号密码,帐号默认为root,填好密码后 点击"OK",连接就建立好了,建立完成后,会出现一个长 ...
- mysql 控制id复原_清空mysql表后,自增id复原
一.清除mysql表中数据 deletefrom表名; truncate table 表名; 不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以 ...
最新文章
- 谈 JavaScript 浮点数计算精度问题(如0.1+0.2!==0.3)
- LeetCode Reverse Nodes in k-Group(单链表连续分段反转)
- poj 2892 Tunnel Warfare
- 目睹鸿蒙开创四大至高位面,吞噬星空 绝非鸿蒙系列,完结前最后的分析【申精】...
- POSIX 消息队列相关问题
- 事务传播机制/数据库异常解析——2016-8-13分享总结
- Spring.NET教程(二十)——整合Quartz.NET(应用篇)
- Memento 备忘录 快照模式 MD
- centos7安装kubernetes 1.1
- [读书笔记]《Windows游戏编程之从零开始》(零)
- protel DXP 2004
- SDN介绍(什么是SDN)
- Your local changes to the following files would be overwritten by merge
- 获取QQ音乐排行榜数据
- 为什么有些人拒绝别人的方式是说谎而不是直接说不?
- 超越谷歌与特斯拉?百度Apollo生态有一套
- 走近篮球运动·体育项目
- pytorch对矩阵(奇异和非奇异)求逆
- navigationController.navigationBar.hiden 导航栏隐藏引发的坐标自动变更
- 疯狂的 ICO 终于被全面叫停;9 月全球数据库排名,Oracle 跌势明显
热门文章
- 【C语言循环结构题目】在屏幕上打印n行*号倒三角形(此处n为6)
- 《图解番茄工作法》读后感
- Mysql(using temporary 与 using filesort)
- 2019-01-07 16:35:40 18616 [Warning] Slave SQL: Could not execute Query event. Detailed error: ;, Err
- 路由与交换-华为eNSP-交换机上配置DHCP技术
- Flash鼠绘入门第四课:绘制漂亮的梅花-梅花骨朵Flash鼠绘方法
- 嫦娥二号没有拍到美国登月痕迹
- 2017黑科技趋势最具看点的十大新品
- 南方周末:史玉柱脑白金式网游重建巨人(转载)
- 我国老年相亲市场的现状分析:百亿级市场的难点与机遇