2013-10-06 73 views
1

我將大型數據庫轉儲到包含表的大型BLOB附件的SQL文件中。在做轉儲時,我打開了hex-blobs,之前我已經做過多次轉儲,沒有任何問題。無法將大型SQL轉儲導入MySQL 5.6

轉儲是使用MySQL 5.1數據庫完成的。

我現在有一個全新安裝的MySQL 5.6,不能導入這個SQL文件。該文件本身大約13GB,並且每次都在同一行失敗。

mysql --user=root --password=xxxx --database=budgets_3 < budgets_3.sql 
Warning: Using a password on the command line interface can be insecure. 
ERROR 2006 (HY000) at line 3251: MySQL server has gone away 

MySQL是重啓或崩潰。 我已經看過使用大文件的文本的SQL文件,並且看不到任何錯誤。除了insert聲明非常大。 我已經在CLI和MySQL Workbench上運行導入,但都失敗。 我已經設置了max_allowed_packet=128M,但仍然不起作用(應該足夠了)。

這是一個粘貼SQL文件的頂部部分。

-- MySQL dump 10.13 Distrib 5.1.72, for Win64 (unknown) 
-- 
-- Host: localhost Database: nosweatbudgets_3 
-- ------------------------------------------------------ 
-- Server version 5.1.72-community 

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */; 
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; 
/*!40101 SET @[email protected]@COLLATION_CONNECTION */; 
/*!40101 SET NAMES utf8 */; 
/*!40103 SET @[email protected]@TIME_ZONE */; 
/*!40103 SET TIME_ZONE='+00:00' */; 
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */; 

這是我的工作站,我是在試圖更新到MySQL 5.6的過程中,如果我不能修復這個我得從生產服務器拉屎。這將需要花費很多時間下載,所以我想看看我能否在這裏工作。

回答

1

我運行了這個查詢,看看max_allowed_packet在運行導入時的真實值。

SHOW VARIABLES LIKE 'max%'; 

我發現MySQL Workbench 6.x在更改配置文件後沒有重新啓動MySQL。因此我解決問題的嘗試不起作用。

重新啓動MySQL後,導入操作成功完成。

另外,我讀了max_allowed_packet是服務器和客戶端都使用的設置。如果遇到此問題,請確保將其設置在服務器配置中和客戶端上。在命令行中設置像這樣的客戶端mysql --max_allowed_packet=64M

問題是,如果數據包太大,服務器可能會斷開連接,如果數據包太大,MySQL客戶端也可能斷開連接。

這在手冊中討論。

http://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html