2013-01-04 86 views
12

我已经给出了一个非常大的mysql备份文件。这是〜630 MB ...我想有人认为将图像存储在数据库中是一个好主意......无论如何,我需要以某种方式在MySQL中恢复数据。但由于文件大小我无法完成。将大的.sql文件导入到MySQL

起初我试着用MySQL Workbench来做。但是,当我尝试导入文件它给了我以下错误:

Could not allocate xxxxx bytes to read file C:\backup.sql

然后我试图通过命令提示符来做到这一点。我进入了cmd如下:

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

,最终给了我以下警告:

ERROR 2006 (HY000) at line 68230: MySQL server has gone away

想这是因为大文件大小也?

我对如何恢复数据没有其他想法。这仍然有可能吗?

+0

打开它,并在分裂的部分文件。注意你保持有效的语法。 – P1nGu1n

+0

它需要多长时间_goes away_?我使用mysql客户端恢复了1.2GB的sql文件,所以它绝对有可能。 –

+1

我不是一个MySQL专家,但发现这篇文章涉及超时配置文件中的设置,这可能是给定文件大小的问题的原因... http://thenitai.com/2010/10/31/a-solution-to-mysql-error-2006-hy000-mysql-server-has-gone-away/ – bUKaneer

回答

11

增加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_timeout'从'10'改为'10000',这对我来说是个诀窍。 – w00

+0

这对我有用 –

3

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

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

,并使用文本编辑器的伟大工程