无法将大型SQL转储导入MySQL 5.6

时间:2013-10-06 22:11:30

标签: mysql mysqldump

我将一个大型数据库转储到一个SQL文件中,该文件包含一个表的大型BLOB附件。在进行转储时,我打开了hex-blobs,之前我已经多次完成了这个转储,没有任何问题。

转储是使用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 @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

这是我的工作站,我正在尝试更新到MySQL 5.6,如果我无法解决这个问题,我将不得不从生产服务器转储。这将花费很多时间下载,所以我想看看我是否可以在这里工作。

1 个答案:

答案 0 :(得分: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