mysql.proc 不断崩溃,无法执行 mysqldump?

qua*_*nta 9 mysql mysqldump stored-procedures crash

由于 InnoDB 的一些问题,我将所有数据库转储到新服务器:

mysqldump -E -R --all-databases | pv -b | mysql -u root -p -h new.server          
Run Code Online (Sandbox Code Playgroud)

转储过程因错误而停止:

59.9kB assword: 59.9kB 
ERROR 145 (HY000) at line 2970: Table './mysql/proc' is marked as crashed and should 
    be repaired
 228MB 
mysqldump: Got errno 32 on write
Run Code Online (Sandbox Code Playgroud)

我运行了以下命令来修复所有数据库中的所有表:

mysqlcheck --auto-repair --all-databases
Run Code Online (Sandbox Code Playgroud)

当我检查mysql.proc状态时,我得到:

mysql> check table mysql.proc;
+------------+-------+----------+----------+
| Table      | Op    | Msg_type | Msg_text |
+------------+-------+----------+----------+
| mysql.proc | check | status   | OK       |
+------------+-------+----------+----------+
1 row in set (0.02 sec)
Run Code Online (Sandbox Code Playgroud)

但是,重新运行mysqldump命令时,我仍然遇到相同的错误。

我有大约 2000 个存储过程。这可能是错误的原因吗?

小智 8

我刚刚遇到了同样的问题,这是通过发出命令来解决的,假设 mysql 数据目录位于 /var/lib/mysql/mysql

myisamchk -q -r /var/lib/mysql/mysql/proc

来源:http : //dev.mysql.com/doc/refman/5.0/en/myisam-repair.html


Phi*_*lᵀᴹ 3

这个错误:

第 2970 行出现错误 145 (HY000):表“./mysql/proc”被标记为已崩溃,应修复 228MB mysqldump:写入时出现 errno 32

...表明问题是写入而不是读取,因此对目标数据库进行修复。