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
Enter password:
test_db.test_table OK
检查数据库内所有资料表:
# mysqlcheck -c test_db -u db_user -p
Enter password:
Enter password:
检查所有数据库内所有资料表, 这里需要用 MySQL 的 root 帐号才有足够权限:
# mysqlcheck -c -u root -p –all-databases
Enter password:
Enter password:
修复资料表, 语法跟检查一样, 只是将 “-c” 换成 “-r”:
# mysqlcheck -r test_db test_table -u db_user -p
Enter password:
test_db.test_table OK
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
Enter password:
test_db.test_table OK
结果检查, 最佳化及修复, 以下以数据库 test_db 所有资料表为例:
# mysqlcheck -u db_user -p –auto-repair -c -o test_db
Enter password:
Enter password:
REPAIR TABLE
以上的 mysqlcheck 需要在指令模式执行, 如果不能进入指令模式, 可以用 REPAIR TABLE 语句, 这个可以透过 PHP 或 PHPMyAdmin 执行, 当然在指令模式登入 MySQL 执行也可以。语法十分简单, 例如要修改 test_table 资料表, SQL 语句如下:
|
1 |
REPAIR TABLE test_table; |