怎么查看mysql数据库中的表是否损坏
发布网友
发布时间:2022-04-25 09:34
我来回答
共1个回答
热心网友
时间:2022-04-08 05:32
可以使用语句检查表。如果结果的msg_text部分是好的,那么你的表是健康的。反之,则表明mysql数据库中的表有损坏。另外有些厉害的高手一额可以通过运行脚本来检测。
MyISAM 表可以采用以下方法进行修复 :使用 reapair table 或myisamchk 来修复。如果修复无效,采用备份恢复表。
阶段1 :检查你的表
如果你有很多时间,运行myisamchk *.MYI 或myisamchk -e *.MYI 。使用-s (沉默)选项禁止不必要的信息。如果mysqld 服务器处于宕机状态,应使用--update-state 选项来告诉myisamchk 将表标记为' 检查过的' 。
你必须只修复那些myisamchk 报告有错误的表。对这样的表,继续到阶段2 。如果在检查时,你得到奇怪的错误( 例如out of memory 错误) ,或如果myisamchk 崩溃,到阶段3 。
阶段2 :简单安全的修复
注释:如果想更快地进行修复,当运行myisamchk 时,你应将sort_buffer_size 和Key_buffer_size 变量的值设置为可用内存的大约25% 。
首先,试试myisamchk -r -q tbl_name(-r -q 意味着“ 快速恢复模式”) 。这将试图不接触数据文件来修复索引文件。如果数据文件包含它应有的一切内容和指向数据文件内正确地点的删除连接,这应该管用并且表可被修复。开始修复下一张表。否则,执行下列过程:
在继续前对数据文件进行备份。使用myisamchk -r tbl_name(-r 意味着“ 恢复模式”) 。这将从数据文件中删除不正确的记录和已被删除的记录并重建索引文件。
如果前面的步骤失败,使用myisamchk --safe-recover tbl_name 。安全恢复模式使用一个老的恢复方法,处理常规恢复模式不行的少数情况( 但是更慢) 。如果在修复时,你得到奇怪的错误( 例如out of memory 错误) ,或如果myisamchk 崩溃,到阶段3 。
阶段3 :困难的修复
只有在索引文件的第一个16K 块被破坏,或包含不正确的信息,或如果索引文件丢失,你才应该到这个阶段。在这种情况下,需要创建一个新的索引文件。按如下步骤操做:
把数据文件移到安全的地方。使用表描述文件创建新的( 空) 数据文件和索引文件:
shell> mysql db_name
mysql> SET AUTOCOMMIT=1;
mysql> TRUNCATE TABLE tbl_name;
mysql> quit
如果你的MySQL 版本没有TRUNCATE TABLE ,则使用DELETE FROM tbl_name 。将老的数据文件拷贝到新创建的数据文件之中。回到阶段2 。现在myisamchk -r -q 应该工作了。你还可以使用REPAIR TABLE tbl_name USE_FRM ,将自动执行整个程序。
阶段4 :非常困难的修复
只有.frm 描述文件也破坏了,你才应该到达这个阶段。这应该从未发生过,因为在表被创建以后,描述文件就不再改变了。
从一个备份恢复描述文件然后回到阶段3 。你也可以恢复索引文件然后回到阶段2 。对后者,你应该用myisamchk -r 启动。
如果你没有进行备份但是确切地知道表是怎样创建的,在另一个数据库中创建表的一个拷贝。删除新的数据文件,然后从其他数据库将描述文件和索引文件移到破坏的数据库中。这样提供了新的描述和索引文件,但是让.MYD 数据文件独自留下来了。回到阶段2并且尝试重建索引文件。
怎么查看mysql数据库中的表是否损坏
可以使用语句检查表。如果结果的msg_text部分是好的,那么你的表是健康的。反之,则表明mysql数据库中的表有损坏。另外有些厉害的高手一额可以通过运行脚本来检测。MyISAM 表可以采用以下方法进行修复 :使用 reapair table 或myisamchk 来修复。如果修复无效,采用备份恢复表。阶段1 :检查你的表 如果...
MySQL故障无法查看数据的解决方法mysql不能看数据
如果MySQL中的数据表被锁定或损坏,也无法查看数据。可以使用如下命令检测数据表状态:CHECK TABLE table_name;如果数据表损坏,可以执行如下命令修复数据表:REPR TABLE table_name;如果数据表被锁定,可以执行如下命令解锁数据表:UNLOCK TABLES;总结 MySQL无法查看数据的原因有很多,常见的有数据库连接问题、...
MySQL报错1146一次棘手的挑战1146mysql报错
2.检查表名是否拼写正确 如果数据库中确实包含这个表,那么我们需要检查一下表名是否拼写正确。有时候,我们可能会因为输入错误的表名而导致MySQL报错1146。3.确认是否有访问权限 如果数据库中确实包含这个表,而且表名也没有问题,那么我们需要确认一下当前用户是否有访问权限。可以使用grant命令为用户授权...
如何在mysql控制台中查看数据库表
1、打开命令行,在命令行里输入mysql,然后按回车就可以打开mysql的命令了。要注意的是区分大小写,不能输入Mysql。2、进入命令后,可以使用use命令来转到我们要查看的数据库。比如 use test (test是一个数据库名)3、切换了数据库后,我们就可以查看这个数据库的表数据了。通过select语句就可以查询表数...
如何处理mysql中表损坏问题
如果你不在数据库目录下,可通过指定到目录的路径检查所有在那里的表:shell> myisamchk /path/to/database_dir/*.MYI 你甚至可以通过为MySQL数据目录的路径指定一个通配符来检查所有的数据库中的所有表:shell> myisamchk /path/to/datadir/*/*.MYI 推荐的快速检查所有MyISAM表的方式是:shell> ...
MySQL中的SHOW语句了解表结构索引进程状态等信息mysql中show语句
一、SHOW TABLES:查看所有表的列表 如果想查看当前数据库中都有哪些表,可以使用如下命令:SHOW TABLES;这个命令会返回一个表名的列表,每一行表示一个表,可以通过这个列表来了解当前数据库中包含哪些表。示例如下:mysql> SHOW TABLES;+———————+ |...
MYSQL数据库怎么查看 哪些表被锁了
方法3:利用 gdb 工具如果上述两种都用不了或者没来得及启用,可以尝试第三种方法。利用 gdb 找到所有线程信息,查看每个线程中持有全局锁对象,输出对应的会话 ID,为了便于快速定位,我写成了脚本形式。也可以使用 gdb 交互模式,但 attach mysql 进程后 mysql 会完全 hang 住,读请求也会受到影响,不...
MySQL中删除数据库中的对象时,出现的问题是什么?
假设你在使用数据库并且你遇到了一个对象已经存在于数据库中。在这种情况下,你可以采取以下步骤来解决这个问题:检查对象的存在:首先,你需要确认这个对象是否真的存在。你可以使用MySQL的SHOW TABLES LIKE 'existing_object'命令来查看是否存在名为"existing_object"的表。权限问题:如果对象确实存在,那么...
如何使用mysqlshow命令查看MySQL数据库的结构和信息?
连接端口:-P参数用于指定连接的端口号,默认为3306,如果需要修改,可以输入该值。具体的应用实例包括:展示所有数据库,可以输入命令 [root@linuxcool ~]# mysqlshow;查看特定数据库的表,如mysql数据库,输入 [root@linuxcool ~]# mysqlshow mysql;获取系统变量信息,用 [root@linuxcool ~]# mysq...
MySQL新增失败怎么办25招轻松应对mysql不能新增
SELECT * FROM 表名 WHERE 列名+0=0;17. 检查MySQL数据库中是否有磁盘空间不足的情况。代码:df -h 18. 检查MySQL数据库中是否有数据文件损坏。代码:mysqlcheck -r -u 根用户 -p 数据库名;19. 检查MySQL数据库中是否存在大量临时文件。代码:find /var/lib/mysql -name “*.MYI...