MySQL执⾏⼤⽂件SQL脚本
问题描述
MySQL转储数据可以直接在命令⾏中操作:
mysqldump -uuser_name -p --databases database_name > sql_script.sql
msyqldump是MySQL的内置指令,user_name是⽤户名,database_name是要转储的数据库名称,可以写多个通过空格分
开。sql_script.sql是输出的sql脚本。
数据库转储⼀般不会太慢。
但如果要执⾏SQL脚本,将数据复原,直接在MySQL中使⽤source指令则会很慢,⽽且在执⾏过程中可能会遇到执⾏错误,在⽇志信息的开头可以见到。
根据执⾏时是否勾选了遇到错误停⽌,报错有两种提⽰:
1. 2013 - Lost connection to MySQL server during query
这种是在遇到错误停⽌执⾏时会提⽰的错误信息。
2. 1153 - Got a packet bigger than 'max_allowed_packet' bytes
这种是在遇到错误时继续执⾏提⽰的错误信息。
原因分析
两种错误原因都是MySQL内置的变量 -- max_allowed_packet 值⼩于正在执⾏的SQL脚本⼤⼩。
可以在MySQL中执⾏:
show VARIABLES LIKE '%max_allowed_packet%';
查看当前配置的可执⾏SQL⽂件⼤⼩限制。
解决⽅案
错误出在MySQL限制了可执⾏⽂件⼤⼩,所以只需要修改该限制即可。
⼀般有两种解决⽅案:
1. 修改MySQL配置⽂件
如果使⽤的免安装版本,⼀般可以在安装⽬录下看见my.ini⽂件或者my.conf⽂件(因系统⽽异)。
可以在其中修改该项的配置参数:
[mysqld]
max_allowed_packet = 200M
免安装版的mysql下载具体值取多少,视情况⽽定。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。