云服务器网:购买云服务器和VPS必上的网站!

如何利用myisamchk和mysqlcheck快速修复损坏的MySQL数据库

如何利用myisamchk和mysqlcheck快速修复损坏的MySQL数据库 由于服务器的数据库硬盘空间满了…

云服务器首年88元起,更有千元代金券礼包免费领!

如何利用myisamchkmysqlcheck快速修复损坏的MySQL数据库

由于服务器的数据库硬盘空间满了,由于大量写入数据失败导致了出现“Duplicate entry ” for key ‘username’”的错误。

如果,出现这样的mysql数据库错误很可能是mysql数据库索引出了问题。那么,什么是mysql数据库索引?

分析:索引如果是primary unique这两两种,那么数据表的数据对应的这个字段就必须保证其每条记录的唯一性。否则就会产生这个错误。

一般发生在对数据库写操作的时候,例如Discuz!4.1论坛程序要求所有会员的用户名username必须唯一,即username 的索引是unique,这时如果强行往cdb_members表里插入一个已有的username的记录就会发上这个错误,或者将一条记录的username更新为已有的一个username。

比如某网友的dedecms网站出问题了,访问一看,果然全屏报错,检查mysql日志,错误信息为:

Table .dedecmsv4dede_archives is marked as crashed and should be repaired

提示说cms的文章表dede_archives被标记有问题,需要修复。

于是赶快恢复历史数据,上网查找原因。最终将问题解决。

解决方法如下:

找到mysql的安装目录的bin/myisamchk工具,在命令行中输入:

myisamchk -c -r ../data/dedecmsv4/dede_archives.MYI

然后myisamchk 工具会帮助你恢复数据表的索引。重新启动mysql,问题解决。

那么,修复mysql数据库一般可以myisamchk工具或者mysqlcheck工具用这二种方法:

1、myisamchk工具

使用 myisamchk 必须暂时停止 MySQL 服务器。例如,我们要检修 discuz 数据库。执行以下操作:

# service mysql stop (停止 MySQL );

# myisamchk -r /数据库文件的绝对路径/*MYI

# service mysql start

myisamchk 会自动检查并修复数据表中的索引错误。

2、mysqlcheck工具

使用 mysqlcheck 无需停止 MySQL ,可以进行热修复。操作步骤如下:

# mysqlcheck -r discuz.*

# service mysql stop (停止 MySQL );

# myisamchk -r /数据库文件的绝对路径/*MYI

# service mysql start

myisamchk 会自动检查并修复数据表中的索引错误。

注意:无论是 myisamchk 还是 mysqlcheck ,一般情况下不要使用 -f 强制修复,-f 参数会在遇到一般修复无法成功的时候删除部分出错数据以尝试修复。所以,不到万不得已不要使用 -f。

本文固定链接:http://www.yuntue.com/post/1454.html | 云服务器 ,转载请注明出处!

关于作者: yuntue

云服务器(www.yuntue.com)是一家专门做阿里云服务器代金券、腾讯云服务器优惠券的网站,这里你可以找到阿里云服务器腾讯云服务器、滴滴云、百度云、七牛云、小鸟云、华为云、京东云等云服务器价格信息,我们会为你提供性价比最高的云服务器和域名、数据库、CDN、免费邮箱等企业常用互联网资源。

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注

1条评论