`
gy3135990
  • 浏览: 51300 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql 表结构损坏

阅读更多

Cause: java.sql.SQLException: Table './hr_2_job/seeker_wish_area' is marked as crashed and last (automatic?) repair failed
; uncategorized SQLException for SQL []; SQL state [HY000]; error code [144]; Table './hr_2_job/seeker_wish_area' is marked as crashed and last (automatic?) repair failed; nested exception is java.sql.SQLException: Table './hr_2_job/seeker_wish_area' is marked as crashed and last (automatic?) repair failed

 

问题分析:

数据表损坏造成的。

解决方法:

也许很多人遇到过类似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数据表损坏的原因分析和修复方法小结(推荐)

    - 进程被杀:mysqld进程在操作表时被意外终止,可能使表结构不完整。 - 并发操作:myisamchk工具与mysqld同时操作同一表,可能导致文件冲突。 - 磁盘故障:硬盘错误或硬件故障可能导致数据丢失。 - 服务器死机:...

    mysql表修复的实用命令

    当遇到诸如数据损坏、表结构错误等问题时,能够快速有效地进行表修复至关重要。本文将详细探讨“mysql表修复的实用命令”,并结合具体实例进行深入分析。 ### MySQL表修复的重要性 MySQL作为一款广泛使用的开源...

    解决MySQL数据库意外崩溃导致表数据文件损坏无法启动的问题

    对于MyISAM引擎,每个表由三个文件组成:`.frm`(表结构),`.myd`(数据文件),`.myi`(索引文件)。而对于InnoDB引擎,每个表的数据和索引都存储在一个`.ibd`文件中,加上`.frm`文件来保存表结构。 当遇到数据库...

    完美解决mysql启动后随即关闭的问题(ibdata1文件损坏导致)

    这个问题通常是由于数据库文件损坏,特别是`ibdata1`文件,它是InnoDB存储引擎的主要数据文件,包含了表数据、索引和其他内部数据结构。 当MySQL服务尝试启动时,如果`ibdata1`文件损坏,它将无法正常完成初始化...

    MYSQL数据库修复程序

    这可能包括重建索引、修复表结构等操作。 5. **表设计和查看**:Navicat允许用户查看和修改表的设计,包括字段类型、键设置、索引等。这对于理解表结构和潜在问题至关重要。 6. **SQL查询与内容读取**:通过SQL...

    MYSQL使用.frm恢复数据表结构的实现方法

    ### MySQL使用.frm文件恢复数据表结构的实现方法 #### 概述 在MySQL数据库管理过程中,有时可能会遇到需要恢复数据表结构的情况。通常来说,MySQL会在创建表时为每张表生成三个主要的文件:`.frm`、`.MYD`(数据...

    MySQL基础与实例教程教学进度表.doc

    5. **表结构管理与数据类型**:教授如何定义表结构,选择适合的数据类型,以及创建表结构。 6. **表记录操作**:包括插入(增)、删除(删)、更新(改)记录,以及索引的创建和使用,提高数据查询效率。 7. **...

    MySQL数据库INNODB表损坏修复处理过程分享

    在MySQL数据库中,InnoDB存储引擎的表损坏是一种常见的问题,尤其当系统出现异常关机、硬件故障或软件错误时。不同于MyISAM存储引擎,InnoDB表的损坏通常不能简单地通过`REPAIR TABLE`命令来修复。下面将详细介绍...

    h2数据导入mysql数据库(看评论酌情下载)

    h2 数据库导入 MySQL 数据库需要通过将 h2 数据库下的表结构和数据分别导入到 MySQL 数据库中,并确保数据的一致性和类型的兼容性。 知识点: * h2 数据库导入 MySQL 数据库的步骤 * 创建 MySQL 数据库 * 将 h2 ...

    SQL Server数据库数据转MySQL工具

    2. **数据迁移**:工具会逐表迁移数据,包括表的结构、数据以及视图、存储过程等对象。过程中需保证数据的一致性和完整性,避免在转换过程中丢失或损坏数据。 3. **事务处理**:为了确保数据一致性,转换通常在事务...

    mysql数据维护

    - 如果需要修改数据,请确保修改后的数据符合 MySQL 表结构的要求。 2. **使用 Navicat 进行数据导入**: - 返回 Navicat 软件,找到之前导出数据的表(`user_`)。 - 右键点击该表,选择“导入”选项。 - 选择...

    MYSQL数据库表的修复教程

    `通常用于快速修复表结构,而忽略数据。 2. **OPTIMIZE TABLE命令**:虽然主要用于优化表的物理存储,`OPTIMIZE TABLE`有时也可以帮助修复轻微的损坏。它会重新组织表的物理结构,释放未使用的空间,并更新统计信息...

    mysql数据库安装包

    - **初始化数据库**:首次安装后,需要初始化MySQL数据库,创建系统表和默认用户。 - **安全设置**:MySQL提供一个安全脚本(mysql_secure_installation)来增强新安装的安全性,建议运行此脚本来删除匿名用户、...

    Mysql数据库误删恢复方法.docx

    本文将详细介绍如何通过`.frm`和`.ibd`文件来恢复已删除的MySQL数据库,主要包括三个关键步骤:恢复数据库文件、恢复表结构和恢复表数据。 1. **恢复 mas2020 数据库文件** 当数据库被误删时,首先要通过文件恢复...

    MySQL删除表的时候忽略外键约束的简单实现

    然而,有时候在开发或测试环境中,我们可能需要快速地删除所有表并重建数据库结构,这时就会遇到因外键约束导致的删除障碍。 当尝试删除一个表而该表包含其他表所依赖的字段时,MySQL会抛出错误1217(23000),提示...

    读取MySQL的*.frm文件(解压密码:zcgonvh)

    在MySQL数据库系统中,`.frm`文件是存储表结构的关键文件,它包含了关于数据库表的定义,如字段名、字段类型、索引等信息。当遇到数据库损坏或丢失元数据的情况,`.frm`文件就成为了恢复数据结构的重要资源。本文将...

    InnoDB 类型MySql恢复表结构与数据

    本文将详细讲解如何恢复InnoDB类型的MySQL表结构和数据。 首先,了解MySQL中的关键文件: 1. `.frm` 文件:这是MySQL用来存储表结构的文件,包含了表的元数据,如字段名、数据类型、索引等信息。`.frm`文件与具体的...

    MySQL 版本升级 8.0.21升到8.0.23.docx

    这涉及到更新内部表结构、索引和其他元数据。在升级过程中,MySQL会自动处理这些迁移,但需要确保有足够的磁盘空间以应对临时文件。 **6. 兼容性与变更** 从8.0.21到8.0.23的升级,可能会包含一些性能优化、安全...

    mysql在linux下日常管理维护

    tablename.frm:格式文件,描述表结构 tablename.MYD:数据文件,存储表数据 tablename.MYI:索引文件,存储表的索引信息 3.4.2 视图的文件表现方式 viewname.frm:视图定义及相关属性 3.4.3 触发器的文件表现...

Global site tag (gtag.js) - Google Analytics