我得到了一个MySQL数据库文件,我需要将其恢复为Windows Server 2008机器上的数据库。

我尝试使用MySQL管理员,但我得到以下错误:

所选文件由 Mysqldump,不能恢复 这个应用程序。

我如何让它工作?


当前回答

使用在Linux上创建的200MB转储文件在Windows w/ mysql 5.5上进行恢复,我使用

source file.sql

方法从mysql提示符比用

mysql  < file.sql

在命令行,这导致一些错误2006“服务器已经离开”(在windows)

奇怪的是,在(mysql)安装期间创建的服务引用了一个不存在的my.ini文件。我将“大”示例文件复制到my.ini中 我已经按照建议的增加量进行了修改。

我的价值观是

[mysqld]
max_allowed_packet = 64M
interactive_timeout = 250
wait_timeout = 250

其他回答

作为前面回答的一个具体例子:

我需要恢复备份,以便导入/迁移到SQL Server。我只安装了MySql,但没有把它注册为服务,也没有把它添加到我的路径中,因为我不需要让它一直运行。

我用windows资源管理器把我的转储文件放在C:\code\dump.sql。然后从开始菜单项中打开MySql。创建DB,然后运行source命令,使用完整路径,如下所示:

mysql> create database temp
mysql> use temp
mysql> source c:\code\dump.sql

如果要恢复的数据库还不存在,则需要首先创建它。

在命令行中,如果你在包含转储文件的同一个目录中,使用这些命令(使用适当的替换):

C:\> mysql -u root -p

mysql> create database mydb;
mysql> use mydb;
mysql> source db_backup.dump;

如果你想查看转储的进度,试试这个:

pv -i 1 -p -t -e /path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME . sh

你当然需要安装“pv”。此命令仅适用于*nix。

您也可以使用MySQL管理员中的恢复菜单。你只需要打开备份文件,然后点击还原按钮。

本地mysql:

mysql -u root --password=YOUR_PASS --database=YOUR_DB < ./dump.sql 

如果你使用docker:

docker exec -i DOCKER_NAME mysql -u root --password=YOUR_PASS --database=YOUR_DB < ./dump.sql