mysql命令修复数据库表

REPAIR TABLE `table_name` 修复表  (只对MyISAM引擎有效)

OPTIMIZE TABLE `table_name` 优化表

REPAIR TABLE 用于修复被破坏的表。

OPTIMIZE TABLE 用于回收闲置的数据库空间,当表上的数据行被删除时,所占据的磁盘空间并没有立即被回收,使用了OPTIMIZE TABLE命令后这些空间将被回收,并且对磁盘上的数据行进行重排(注意:是磁盘上,而非数据库)。

多数时间并不需要运行OPTIMIZE TABLE,只需在批量删除数据行之后,或定期(每周一次或每月一次)进行一次数据表优化操作即可,只对那些特定的表运行。

一般来说,数据库被破坏只是指索引文件受到了破坏,真正的数据被破坏掉的情况非常少。大多数形式的数据库破坏的的修复相当简单。

下面的方法只对MyISAM格式的表有效。其他类型的损坏需要从备份中恢复。

1,REPAIR TABLE SQL statement (mysql服务必须处于运行状态)。

2,命令mysqlcheck (mysql服务可以处于运行状态)。

3,命令myisamchk (必须停掉mysql服务,或者所操作的表处于不活动状态)。

在修复表的时候,最好先作一下备份(此时一般用mysqldump已经无法备份了,把整个data目录复制出来吧),所以你需要两倍于原始表大小的硬盘空间。请确保在进行修复前你的硬盘空间还没有用完。

1>用”repair table”方式修复

语法:repair table 表名 [选项]

选项如下:

QUICK 用在数据表还没被修改的情况下,速度最快

EXTENDED 试图去恢复每个数据行,会产生一些垃圾数据行,万般无奈的情况下用

USE_FRM 用在.MYI文件丢失或者头部受到破坏的情况下。利用.frm的定义来重建索引

多数情况下,简单得用”repair table tablename”不加选项就可以搞定问题。但是当.MYI文件丢失或者头部受到破坏时,这样的方式不管用,这时索引文件丢失或者其头部遭到了破坏,为了利用相关定义文件来修复,需要用USE_FRM选项。

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’

Data records: 0相关阅读:

正则表达式从句子中找出包含或不包含某单词

PHP加密解密函数,手册上的

PHP完美截取HTML标签不错位

PHP GBK,PHP输出GBK所有汉字

php汉字正则表达式,utf8编码和gbk编码

PHP创建桌面快捷方式

PHP5.4中关于VC9和VC6以及Thread Safe和Non Thread Safe版本选择的问题

PHP5.3.8安装配置 at WIN2003+IIS6

mysql修复表命令_mysql命令修复数据库表相关推荐

  1. MySQL学习笔记03【数据库表的CRUD操作、数据库表中记录的基本操作、客户端图形化界面工具SQLyog】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  2. 如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (上) 试读版

    ABAP 标准培训教程 BC400 学习笔记之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍 ABAP 标准培训教程 BC400 学习笔记之二:Cross-client 和 Clien ...

  3. 如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (下)

    在本文的前续篇章:如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (上) 我们已经在系统里创建了两张数据库表 ZPERSON 和 ZMYORDERS, 并插入了对应的记录: 文章的 ...

  4. 大文件表空间+创建大文件表空间+查询数据库表空间类型信息+查询数据库表空间类型信息...

    1用于解决存储文件大小不够的问题 2与普通表空间不同的地方在于大文件表空间只对应唯一一个数据文件或临时文件,普通表空间可最多1022个数据文件或临时文件 3大文件表空间对应文件可达4G个数据块大小,普 ...

  5. MySQL命令导入表数据_Mysql命令行导入sql数据

    mysqldump  是在  操作系统命令行下运行的,不是在 MySQL 命令行下运行的. 登陆数据库: 登陆本地mysql : mysql -h localhost -u root -p123456 ...

  6. mysql添加表字段_mysql命令添加表字段

    常用的通过mysql命令来更改表结构的一些sql语句,包括添加.删除.修改字段.调整字段顺序. 添加字段: alter table `user_movement_log` Add column Gat ...

  7. mysql 查看索引 命令_MySQL命令篇之库、表、索引、用户、视图及SELECT查询

    大纲 一.库管理 二.表管理 三.索引管理 四.用户管理 五.视图管理 六.SELECT查询 一.库管理 (1).创建数据库CREATE DATABASE db_name [CHARACTER SET ...

  8. mysql删除表命令_MySQL创建和删除表操作命令实例讲解

    创建表 简单的方式 CREATE TABLE person ( number INT(11), name VARCHAR(255), birthday DATE ); 或者是 CREATE TABLE ...

  9. mysql 数据库合并命令_mysql命令整合

    本文链接:https://blog.csdn.net/weixin_42572884/article/details/82951675 一,数据库: 1. 查询数据库:show database: 2 ...

  10. mysql带c的命令_mysql命令整理

    一.总结一下: 1.linux下启动mysql的命令: mysqladmin start /etc/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql ...

最新文章

  1. Redis最佳实践:业务层面和运维层面优化
  2. 第10章 接口、继承与多态----抽象类和接口
  3. 深度学习时代的数据科学和自然语言处理
  4. python实现qq登录_在django中实现QQ登录
  5. ROS2学习(九).ROS概念 - ROS 2参数(ROS 2 parameters)
  6. 解决flask端口被占用的问题
  7. html div 球形,CSS3 简单的球形构造
  8. python中matlab函数图像处理,MATLAB图像处理--同态滤波(代码及示例)
  9. JavaScript实现继承的几种方式
  10. python列表心得_Python学习心得(第一篇:字符串、列表等)
  11. Jay Simons谈Atlassian收购Trello
  12. 机器学习(3)--LR算法
  13. diy个人级超级计算机,八核+七卡!泡泡网DIY个人超级计算机
  14. 爬楼梯 java_爬楼梯问题java实现
  15. 听NBA现场讲解很爽,但啥都听不懂?快来学学术语!
  16. React之Hook(四)——使用 Effect Hook
  17. php降序怎写,PHP数组如何按键名实现降序排列
  18. 【我的Android进阶之旅】 高效的设计稿标注及测量工具Markman介绍
  19. 安卓证书免费在线制作工具
  20. QQ音乐 最新歌曲源 API(稳定)

热门文章

  1. VS Code:4个中文乱码问题及解决方法
  2. VScode中文注释乱码问题解决
  3. [转载]计算机视觉专业名词中英文对照
  4. 轻量却超强——推荐几款好用的截图工具(1) FScapture
  5. 2021-2027全球及中国LXP平台行业研究及十四五规划分析报告
  6. 【matlab_郭彦甫课后练习题答案】
  7. JRtplib开发笔记(一):JRtplib简介、JThread库编译
  8. 为什么计算机网络使用数字信号,什么是数字信号
  9. 【干货】|800份实战经验PPT免费下载
  10. Python面试宝典