在 Debian 上修复 MySQL(或 MariaDB)损坏的表,通常可以按下面的思路来操作。先确认你用的是 MySQL 还是 MariaDB,再选择方法。
mysql --version
MariaDB → 用 MariaDB 方式MySQL → 用 MySQL 方式mysqlcheck(最推荐,在线修复)适用于 MyISAM / InnoDB(部分情况)
mysqlcheck -u root -p --all-databases
mysqlcheck -u root -p --auto-repair --all-databases
mysqlcheck -u root -p --auto-repair 数据库名
mysqlcheck -u root -p --repair 数据库名 表名
仅适用于 MyISAM
REPAIR TABLE 表名;
或强制:
REPAIR TABLE 表名 USE_FRM;
InnoDB 不能用 REPAIR TABLE。
编辑配置文件:
sudo nano /etc/mysql/my.cnf
或(Debian 新版本):
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
添加:
[mysqld]
innodb_force_recovery = 1
从 1 到 6 逐级尝试(数值越大越激进)
重启:
sudo systemctl restart mysql
若能启动,立即 导出数据:
mysqldump -u root -p 数据库名 > backup.sql
然后:
⚠️ 有风险,仅应急
sudo systemctl stop mysql
进入数据目录(示例):
cd /var/lib/mysql/数据库名
MyISAM 表:
myisamchk -r 表名.MYI
启动 MySQL:
sudo systemctl start mysql
mysqldump -u root -p --all-databases > all.sql
如果你愿意,可以告诉我:
Table is marked as crashed)我可以给你更精确的修复命令。