MySQL 檢查及修復資料表

MySQL 資料表發生損壞 (corrupted), 原因可能是斷電或強制關機等導致, 要修復分別可以用 mysqlcheck 及 repair table, 以下是兩者的用法:

mysqlcheck
mysqlcheck 是 MySQL 內建的指令模式工具, 可以檢查, 修復及最佳化資料表, 以下是常見用法:

檢查個別資料表, 下面以用戶 db_user, 資料庫 test_db, 及資料表 test_table 為例:

# mysqlcheck -c test_db test_table -u db_user -p
Enter password:
test_db.test_table OK

檢查資料庫內所有資料表:

# mysqlcheck -c test_db -u db_user -p
Enter password:

檢查所有資料庫內所有資料表, 這裡需要用 MySQL 的 root 帳號才有足夠權限:

# mysqlcheck -c -u root -p –all-databases
Enter password:

修復資料表, 語法跟檢查一樣, 只是將 “-c” 換成 “-r”:


# mysqlcheck -r test_db test_table -u db_user -p
Enter password:
test_db.test_table OK

最佳化資料表, 將上面指令的 “-c” 換成 “-o”:

# mysqlcheck -o test_db test_table -u db_user -p
Enter password:
test_db.test_table OK

結果檢查, 最佳化及修復, 以下以資料庫 test_db 所有資料表為例:

# mysqlcheck -u db_user -p –auto-repair -c -o test_db
Enter password:

REPAIR TABLE
以上的 mysqlcheck 需要在指令模式執行, 如果不能進入指令模式, 可以用 REPAIR TABLE 語句, 這個可以透過 PHP 或 PHPMyAdmin 執行, 當然在指令模式登入 MySQL 執行也可以。語法十分簡單, 例如要修改 test_table 資料表, SQL 語句如下:


Leave a Reply