将大型.sql文件导入MySQL

13

我收到了一个非常大的MySQL备份文件。它有约630 MB大小...我猜有人认为将图像存储在数据库中是个好主意...无论如何,我需要想办法在MySQL中恢复数据。但是由于文件大小,我无法完成此操作。

起初我尝试使用MySQL Workbench进行操作。但是当我尝试导入文件时,它会给我以下错误:

无法分配xxxxx字节以读取文件C:\backup.sql

然后我尝试通过命令提示符来完成此操作。我在cmd中输入了以下内容:

C:\> mysql -u user -pPassword database < C:\backups.sql

最终这个问题会导致以下警告:

错误 2006 (HY000),位于第68230行:MySQL服务器已断开连接

猜想也许是由于文件大小过大导致的吗?

我没有其他恢复数据的想法了。还有别的办法可以实现吗?


使用文本编辑器打开它并将文件分割成几个部分。注意保持有效的语法。 - P1nGu1n
它需要多长时间才能“消失”?顺便说一下,我使用mysql客户端恢复了1.2GB的sql文件,所以肯定是可能的。 - Salman A
1
我不是MySQL专家,但找到了这篇文章,它涉及到配置文件中的超时设置,鉴于文件的大小,这可能是您遇到问题的原因... http://thenitai.com/2010/10/31/a-solution-to-mysql-error-2006-hy000-mysql-server-has-gone-away/ - Luke Baughan
@SalmanA 在警告出现之前需要大约30秒的时间。我刚刚注意到它进行了部分恢复。但由于某些原因,它在30分钟后就会“消失”。 - w00
@bUKaneer 谢谢,那看起来可能会有用。我现在正在尝试找到那些设置。希望对我有帮助。 - w00
2个回答

12

增加wait_timeout和/或interactive_timeout有助于解决问题。首先检查当前值:

C:\> mysql -hlocalhost -uroot -proot

mysql> SHOW VARIABLES LIKE 'wait_timeout';
如果这个值非常低(例如30秒),请将其增加(例如5分钟):
mysql> SET SESSION wait_timeout = 300;
mysql> SET SESSION interactive_timeout = 300;

然后执行您的 SQL 文件:

mysql> \. database.sql

2
我还将interactive_timeout更改为一个较大的值。但是,这个和wait_timeout一起对我没有用。之后,我还将connect_timeout10更改为10000,这对我有用。 - w00

3

我有一个3.5G的转储文件,我尝试使用PhpMyAdmin和MySql Workbench导入它,但没有成功。所以我只是使用控制台来运行它。

# mysql -u user_name -pYour_passwd your_db < your_dump.sql

而且它的工作表现非常出色。


你的 your_dump.sql 文件应该放在哪里? - May'Habit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接