从.sql备份恢复MySQL数据库失败:mysql.proc表不存在

时间:2014-06-29 19:48:14

标签: mysql database-backups

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选项。我不确定原因,但幸运的是,尽管它没有任何用户表,我仍然可以登录服务器。

编辑:我相信能够仍然登录的情况类似于在他们刷新之前不会改变的特权。

我不确定为什么&#34;&#39; mysql.proc&#39;不存在&#34;是一个问题,因为它应该在恢复之前被删除。

2 个答案:

答案 0 :(得分:5)

我已经得到了相同的“表'mysql.proc'不存在”错误,尽管我只是想恢复数据库。无论如何,对我有用的是在终端中运行以下命令,然后再次尝试

mysql_upgrade

答案 1 :(得分:0)

我不确定上述错误是如何完全相关的,但问题源于mysql数据库未被完全删除。它的数据目录中有文件不是表(.frm等)。

参见相关帖子:Error Dropping Database (Can't rmdir '.test\', errno: 17)

在这种情况下,那些&#34;文件&#34;隐藏了Windows .BackupManager目录,这些目录似乎存在于我的机器上的C:下的每个目录中。从需要删除的数据目录中删除它们就是解决方案。