从 .sql 备份恢复 MySQL 数据库失败:mysql.proc 表不存在
Posted
技术标签:
【中文标题】从 .sql 备份恢复 MySQL 数据库失败:mysql.proc 表不存在【英文标题】:Restoring MySQL db's from .sql backup failed: mysql.proc table doesn't exist 【发布时间】:2014-08-20 04:56:27 【问题描述】:Windows Server 2008 R2 mysql 5.5 (msi 安装)
我做了一个备份:
mysql -uuser -p --single-transaction --add-drop-database --databases mysql db1 db2 db3 --result-file="C:\ProgramData\mysql\mysql server 5.5\data\backup.sql"
但它没有恢复成功:
mysql -u root -p --verbose < bakcup.sql
Enter password:
--------------
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */
--------------
--------------
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */
--------------
--------------
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */
--------------
--------------
/*!40101 SET NAMES utf8 */
--------------
--------------
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */
--------------
--------------
/*!40103 SET TIME_ZONE='+00:00' */
--------------
--------------
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */
--------------
--------------
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */
--------------
--------------
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */
--------------
--------------
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */
--------------
--------------
/*!40000 DROP DATABASE IF EXISTS `mysql`*/
--------------
ERROR 1146 (42S02) at line 22: Table 'mysql.proc' doesn't exist
现在我所有的表都在 mysql 数据库中消失了……我猜是因为我在备份中使用了 --add-drop-database 选项。我不知道为什么,但幸运的是,尽管它没有任何用户表,但我仍然可以登录到服务器。
编辑:我相信仍然能够登录类似于权限在刷新之前不会改变。
我不确定为什么“'mysql.proc' 不存在”是一个问题,因为它应该在恢复之前被删除。
【问题讨论】:
我的猜测是恢复在错误发生后立即停止,并且它没有删除负责身份验证的表。 【参考方案1】:我不确定上述错误是如何准确关联的,但问题源于 mysql 数据库未完全删除。它的数据目录中有不是表的文件(.frm 等)。
查看相关帖子:Error Dropping Database (Can't rmdir '.test\', errno: 17)
在这种情况下,这些“文件”是隐藏的 Windows .BackupManager 目录,似乎存在于我机器上 C: 下的每个目录中。从需要删除的数据目录中删除它们是解决方案。
【讨论】:
【参考方案2】:我得到了同样的“表 'mysql.proc' 不存在”错误,虽然我只是想恢复一个数据库。无论如何,对我有用的是在终端中运行以下命令,然后再试一次
mysql_upgrade
【讨论】:
以上是关于从 .sql 备份恢复 MySQL 数据库失败:mysql.proc 表不存在的主要内容,如果未能解决你的问题,请参考以下文章
从“C:\xampp\mysql\data”文件夹的备份中恢复 SQL 数据库