2013-01-04 179 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 

,並使用文本編輯器的偉大工程