`

记一次mysql 导入15M的SQL文件出错调试过程

阅读更多

问题:用navicat 导入15M的SQL文件 ,报错  [Err] 2006 - MySQL server has gone away   

搜索出来解决方案是(非常多的坑,且听下面慢慢分解):

 

在my.conf(这货是linux的,win是my.ini,坑啊,还好顺便看到一个软件叫search everything,比win自带的搜索功能强大多了,一秒就搜索出来了。原来在C:\ProgramData\MySQL\MySQL Server 5.6下面)里面增加两行代码, 如:

max_allowed_packet=500M
connect_timeout = 43200

 

 

好了,保存。上面方案也没说修改完就重启mysql啊(坑啊),自己觉得肯定需要重启啊,于是在win服务里面,找到mysql,重启之,我去,重启不了了!!!!坑啊。

 

没办法,怀疑是不是Mysql5.7的问题,毕竟java8,tomcat8也都有点问题,于是重新下载5.6版本的,先是一顿删除程序,再重启,再重新安装,满怀希望重新修改my.ini文件之后,发现还是重启不了。又搜,发现是不是需要通过命令来重启服务,

net stop mysql56 (你的服务名)

net start mysql56 (你的服务名)

 注,1  、通过CMD来运行的时候,还需要获得CMD管理员权限(在开始菜单的搜索框张收入cmd,然后右键单击,并选择以管理员身份运行!),否则会报错  发生系统错误 5 拒绝访问 

 

      2、获得权限后,会报错:服务正在启动或停止中,请稍候片刻后再试一次。别慌,任务管理器里面 关掉所有mysql的进程。

 

好了,解决后,发现命令还是启动不了服务,报错:

 MySQL 服务正在启动 ...................

MySQL 服务无法启动。

请键入 NET HELPMSG 3523 以获得更多的帮助。

 

 

终于,看到一篇博客(地址:http://blog.csdn.net/u013243986/article/details/52585668),原来是这样的,他的博客里面有点问题(小坑),正确的应该是用,格式-》转为UTF-8 无BOM编码格式,保存。start 成功!!

 

继续导入SQL文件,还是同样的错误,mysql gone away。终于无意中在stackoverflow看到一句话(地址:http://stackoverflow.com/questions/10474922/error-2006-hy000-mysql-server-has-gone-away,但是问题主采用的 还是上面的修改my.ini的方法,在我这是不行的),这句话就是

 

A couple things could be happening here;

  • Your INSERT is running long, and client is disconnecting. When it reconnects it's not selecting a database, hence the error. One option here is to run your batch file from the command line, and select the database in the arguments, like so;

$ mysql db_name < source.sql

  • Another is to run your command via php or some other language. After each long - running statement, you can close and re-open the connection, ensuring that you're connected at the start of each query.

,完美的解释了问题的原因和解决方案。多谢了。

 

于是看来通过navicat是不行了,那我就用source命令来导入吧,打开commad line ,输入密码--

 

use dbName

source D:\your.sql

 

 OK,执行成功,表已经全部导入进去了。

 

希望给后来者一个参考。自从mysqlm卖给ORACLE后,我发觉mysql越来越难用了,想当年,毕业设计用的mysql,多简单方便啊。JAVA也是,卖给ORACLE后,感觉后继无力。。。

 
再者,希望大家有条件的情况下多写原创的博客,不要复制了,好多方案根本解决不了。浪费时间。
 
那个搜索小软件地址:http://www.voidtools.com/
 
附:
http://dev.mysql.com/doc/refman/5.5/en/replication-features-max-allowed-packet.html 写道
max_allowed_packet sets an upper limit on the size of any single message between the MySQL server and clients, including replication slaves. If you are replicating large column values (such as might be found in TEXT or BLOB columns) and max_allowed_packet is too small on the master, the master fails with an error, and the slave shuts down the I/O thread. If max_allowed_packet is too small on the slave, this also causes the slave to stop the I/O thread.

Row-based replication currently sends all columns and column values for updated rows from the master to the slave, including values of columns that were not actually changed by the update. This means that, when you are replicating large column values using row-based replication, you must take care to set max_allowed_packet large enough to accommodate the largest row in any table to be replicated, even if you are replicating updates only, or you are inserting only relatively small values.

 官网都写了,max_allowed_packet 这货是用来当字段值太大(BOLB ,TEXT这种)时候用来扩容的,跟我的脚本大完全不是一回事啊。大家都有点钻研精神多好。这点老外领先我们太多。
附二:
写道
BOM: Byte Order Mark
UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行,
 
 
  • 大小: 43.6 KB
0
2
分享到:
评论
2 楼 cainiao1923 2016-11-15  
yeshuang 写道
感谢楼主分享,只是我有一点想不明白,当然我也没有15M大小的数据去验证,只是在平时,我也导出些数据,然后再导入另一个库,过程中也没有什么问题.当然使用都是同个navicat软件操作导入导出.



你数据量大的时候看看瞧,很容易就出现了
1 楼 yeshuang 2016-11-06  
感谢楼主分享,只是我有一点想不明白,当然我也没有15M大小的数据去验证,只是在平时,我也导出些数据,然后再导入另一个库,过程中也没有什么问题.当然使用都是同个navicat软件操作导入导出.

相关推荐

    一键安装jdk,mysql并且创建数据库执行sql文件的bat文件

    2. 使用`mysql.exe`命令导入SQL文件。例如: ```bat mysql -u root -p%MYSQL_ROOT_PASSWORD% mydatabase 路径\to\database.sql" ``` 这行命令会连接到`mydatabase`数据库并执行`database.sql`中的SQL语句。 在`...

    sql替换工具 sql语句替换软件

    4. "SQL批量替换.vshost.exe.manifest":这是Visual Studio调试版本的清单文件,通常在开发过程中用于支持Visual Studio的调试功能,但用户在实际使用时通常不需要关心这个文件。 5. "redme.txt":这是常见的readme...

    sql脚本批量执行工具

    SQL脚本批量执行工具是一种高效、实用的数据库管理软件,专为DBA(数据库管理员)和开发人员设计,用于一次性处理多个SQL脚本文件。在数据库维护、数据迁移或更新过程中,这种工具能够显著提高工作效率,减少手动...

    Python 自动生成 MySQL 语句

    本话题主要探讨如何使用Python来自动扫描文件系统,并根据文件结构生成MySQL数据库和表的创建及导入语句。这个过程可以极大地简化数据库的初始化工作,特别是当处理大量结构化的文本数据时。 首先,我们需要了解...

    excel批量导入数据库

    3. 日志记录:记录导入过程,以便跟踪和调试错误。 4. 定期备份:在操作前备份数据库,以防意外情况。 综上所述,Excel批量导入数据库是一项常用的任务,可以通过各种工具和方法实现。理解其背后的原理和使用技巧,...

    mysql数据库的图形工具,主要特性包括多文档界面,语法突出,拖拽方式的数据库和表格,可编辑/可增加/删除的域,可编辑/可插入/删除的记录,可显示的成员,可执行的SQL 脚本,提供与外程序接口,保存数据到CSV文件等

    MySQL数据库的图形工具是数据库管理员和开发人员的重要辅助工具,它们提供了一种直观且用户友好的方式来管理和操作数据库。本文将深入探讨标题和描述中提及的一些关键特性,以及它们如何增强MySQL数据库的工作效率。...

    PHP执行SQL文件并将SQL文件导入到数据库

    标题中的“PHP执行SQL文件并将SQL文件导入到数据库”指的是使用PHP编程语言来读取一个包含SQL语句的文件,并将这些语句逐条执行,从而将数据导入到指定的数据库中。这是一个常见的数据库初始化或者数据迁移的过程。 ...

    mss2sql_v5-3.zip

    2. 数据迁移:除了结构,Mss2sql还能将SQL Server中的数据导出并导入到MySQL中。用户可以选择全部数据或者部分数据进行迁移,确保迁移的灵活性。 三、使用教程 压缩包中的"mss2sql_v5-3"文件包含了详细的使用教程,...

    MySQL可视化插件及操作视频

    MySQL是一款广泛使用的开源关系型数据库管理系统,其强大的功能和灵活性使其在各种规模的企业和项目中都有应用。在处理复杂的数据库管理任务时,使用可视化工具能够极大地提高效率和便捷性。本资源提供的是“MySQL...

    Excel导入数据库工具

    对于"excel导入sql数据库工具.exe"这个特定的文件,我们可以推断这是一个能够将Excel数据导入SQL数据库的应用程序。SQL(Structured Query Language)是用于管理和处理关系型数据库的标准语言,广泛应用于各种数据库...

    WEB导入文件到数据库.zip

    本文将深入探讨如何实现这个过程,并针对"WEB导入文件到数据库"的主题,特别是与Office 2019相关的可能问题进行讨论。 首先,让我们了解基本概念。Web导入是指从Web源获取数据,例如网页、API接口或云存储服务,...

    sqlexplorer_plugin-3.5.1

    它提供了编写、执行和调试SQL语句的能力,同时支持数据浏览、表管理、视图创建、存储过程操作等一系列数据库管理功能。通过Eclipse的界面,用户可以直观地看到查询结果,甚至进行数据的增删改查操作,大大简化了...

    mysql-for-visualstudio-2.0.5

    4. **查询编辑器**:内置SQL查询编辑器,支持编写、执行和调试SQL语句,提供代码提示和自动完成功能,提高开发效率。 5. **版本控制集成**:与Visual Studio的版本控制系统(如Git、SVN)无缝集成,使得数据库结构...

    批处理bat 一键安装MySQL

    4. **`test.sql`文件**:这个文件可能包含了创建数据库、用户、表以及导入数据的SQL语句。在MySQL安装完成后,通常需要进行一些基本的配置,如创建用户、设定权限,`test.sql`就是用来实现这些配置的。 5. **自动化...

    批量数据导入

    不同的数据库管理系统(如MySQL、Oracle、SQL Server、MongoDB等)都有自己的数据导入导出工具和方法,例如MySQL的`mysqldump`和`LOAD DATA INFILE`命令,Oracle的`EXPDP`和`IMPDP`,以及SQL Server的`bcp`工具和`...

    易语言模块SQL到文本.rar

    5. **错误处理**:在执行过程中,模块应具备良好的错误处理机制,当数据库连接失败、查询错误或者文件写入出错时,能够给出明确的错误提示,方便用户调试和解决问题。 6. **性能优化**:为了提高效率,模块可能包含...

    sql语言自动生成器

    SQL语言自动生成器是一款专为程序员和数据库管理员设计的实用工具,旨在简化SQL语句的编写过程。在数据库管理和开发中,SQL(Structured Query Language)是用于管理关系数据库的标准语言,包括查询、插入、更新和...

    sql编辑工具, 用于写sql

    SQL(Structured Query Language)是一种用于管理和处理关系数据库的标准编程语言,广泛应用于数据查询、更新、插入和删除等操作。SQL编辑工具是专为方便开发者编写、调试和优化SQL语句而设计的应用软件或插件。这类...

    navicat_mysql_en.rar_NAVICAT 5_mysql客户端_navicat_navicat101_mysql

    它提供了多种数据操作工具,如SQL编辑器,可以方便地编写、执行和调试SQL语句;数据可视化工具,帮助用户通过图表理解复杂数据;以及数据同步工具,用于比较并同步不同数据库之间的差异。 总的来说,Navicat for ...

    SQL查询分析器修正分离版SQL查询分析器修正分离版

    7. **错误提示和调试**:当SQL语句出错时,分析器会提供错误信息,帮助用户快速定位和解决问题。 8. **代码自动完成**:提供代码补全功能,加快编写SQL语句的速度,减少错误。 9. **导出和导入数据**:可以将查询...

Global site tag (gtag.js) - Google Analytics