window下修複mysql表與數據庫

在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

%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中功能進行表的修複,方法是一樣的。

更多相關文章
  • Ubuntu環境下將 Mysql 5.5 數據庫遷移到 MariaDB 10 步驟
    本教程是本人親自測試過的教程,在 Ubuntu 14.04 環境下, Mysql 5.5 數據庫如何遷移到 MariaDB 10,有需要的朋友可以看一下.這篇文章是我們自己親手實驗過的,系統爲 Ubuntu 14.04 server,Mysql 數據庫爲 Mysql 5.5,准備遷移到 Maria
  • Cobar基于MySQL的分布式數據庫服務中間件
    通過數據水平拆分,並行計算與分布式事務等核心技術,實現海量數據高效處理與分析,下面我們來看一篇關于Cobar基于MySQL的分布式數據庫服務中間件的例子.Cobar是阿裏巴巴研發的關系型數據的分布式處理系統,是提供關系型數據庫(MySQL)分布式服務的中間件,該産品成功替代了原先基于Oracle的數 ...
  • 前面講過mysql熱備份,下面小編再來給各位同學介紹一下在CENTOS6.3中MYSQL主從數據庫備份配置的方 法,希望此教程 對各位同學會有所幫助哦. MySQL主主互備結構是基于mysql增量日志基礎上的,區別于主從複制結構. 在主主複制結構中,兩台伺服器的任何一台上面的數據庫存發生了改變都會同 ...
  • 本文章來給大家介紹一篇mysql備份的功能,這個就是常用的mysql 5.5數據庫主從配置了,這個算是熱備份吧,你有數據更新就會自動更新了,相對來說安全也比較高了,下面我來給大家介紹一下.上次給大家介紹了mysql
  • MAC下YII 2 MIGRATE命令操作數據庫
    yii2 migrate數據庫或數據表都是非常的實用了,我們這裏給各位介紹在MAC下YII 2 MIGRATE命令操作數據庫的例子,具體的操作例子可以參考下文所示.下面是在Mac下使用 Yii 2 migrate 命令安裝初始化數據庫: 必須首先有PHP系統環境變量,才能執行Yii命令行.在終端輸入 ...
  • MySQL/MariaDB/Percona數據庫都是我們常用的數據庫了,特別是mysql在linux或windows中使用到是非常的多了,今天我們來看這三種數據庫在linux中的升級腳本一般情況下不建議升級數據庫版本,該腳本專提供給各位版本控們.爲防止大版本之間兼容問題,腳本默認僅支持同一大版本之間
  • 數據庫注入對于程序員來講這個我們一般要進行一些過濾了,特別是在數據庫這一塊特別容易給注入了,下面我們整理了一些關于mysql LOAD_FILE 在數據庫注入中的使用的例子,讓大家知道是如何注入的這樣強以更好的來防護網站.LOAD_FILE 函數只有滿足以下2個條件就可以使用1.文件權限: chmo ...
  • Oracle自動備份數據庫功能其實是非常的簡單了,今天我們就一起來看看centos下Oracle自動備份數據庫步驟吧,希望文章對各位有幫助的哦.**環境說明**Oracle數據庫伺服器操作系統:CentOSIP:192.168.150.214端口:1521SID:orclOracle數據庫版本:Or ...
一周排行