window下修复mysql表与数据库
发布:smiling 来源: PHP粉丝网 添加日期:2014-10-09 10:48:10 浏览: 评论:0
在windows系统下使用mysql的朋友可能有时会碰到表突然坏了,出现:Table p is marked as crashed and should be repaired 等等问题,下面我来介绍修复mysql数据库与表的方法.
先来分析问题
一个损坏的表的典型症状如下:
1 、当在从表中选择数据之时,你得到如下错误:Incorrect key file for table: '...'. Try to repair it.
2 、查询不能在表中找到行或返回不完全的数据.
3 、Error: Table 'p' is marked as crashed and should be repaired.
4 、打开表失败: Can’t open file: ‘×××.MYI’(errno: 145).
如果你是myisam表可以常用使用下面方法来修复.
修复步骤:
1)修复前将mysql服务停止.
2)打开命令行方式,然后进入到mysql的/bin目录.
3)执行myisamchk --recover 数据库所在路径/*.MYI,注:提示后面不要跟随号.
语法: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
- --phpfensi.com
- %mysqlcheck -r sports_results -uuser -ppass
- sports_results.mytable OK
- sports_results.events OK
进行修复操作需以读/写方式锁定数据表,命令如下:
- % mysql
- mysql> use db
- mysql> LOCK TABLE table_name WRITE;#以读/写方式锁定数据表
- mysql> FLUSH TABLE table_name;
保持mysql客户端连接状态,切换到第二个shell窗口,运行修复命令:
% myisamchk --recover table_name
运行修复命令前最好先备份一下数据文件,修复完成后,切换回mysql客户端连接窗口,运行以下命令解除数据表锁定,代码如下:
- mysql> FLUSH TABLE table_name; #使服务器觉察新产生的索引文件
- mysql> UNLOCK TABLE;
还可用以下命令锁定所有表,锁定后,所有用户就只能读不能写数据,这样就可使我们能安全地拷贝数据文件,代码如下:
mysql> FLUSH TABLES WITH READ LOCK;
下面是解除锁语句,代码如下:mysql> UNLOCK TABLES;
小提示:一般我们都会有phpmyadmin这个功能了,这样如果表坏了就可以直接利用phpmyadmin中功能进行表的修复,方法是一样的.
Tags: window修复mysql 修复mysql表
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)