您的当前位置:首页正文

mysql导入大型的sql文件遇到问题及解决办法

2024-11-07 来源:个人技术集锦
我们在用mysql数据库时,有时会把这个数据库里的数据弄到另一个数据库,这时候我们会用到把数据导成sql文件,
	然后再执行该sql添加数据到另一个数据库中,下面来写一下,本人在操作时遇到的问题,及解决办法:
	1.利用连接数据库的图形界面导入sql:
		这样导入的方式1是速度慢,2是会遇到各种的报错,比较麻烦:
	(一)我们导入sql时会因为导出sql文件执行添加表的顺序不一样会报Cannot delete or update a parent row: a foreign key constraint fails (...);
		我们可以使用  SET FOREIGN_KEY_CHECKS=0;  来禁用外键约束.
		插入数据后再用  SET FOREIGN_KEY_CHECKS=1;  来启动外键约束.
		查看当前FOREIGN_KEY_CHECKS的值可用如下命令  SELECT  @@FOREIGN_KEY_CHECKS;

	( 二 )在使用批量插入语句时插入大量的数据时,报错 1153 - Got a packet bigger than 'max_allowed_packet' bytes 
		我们可以使用  set global max_allowed_packet = 2*1024*1024*10   设置最大值为20M
		或则在my.ini加入:[mysqld]max_allowed_packet=16M  重新启动mysql
		然后再执行插入语句就不会报错了。
	2.利用命令导入sql文件
		我们有时也会遇到配置的问题报错:
		一般在my.ini中配置一下以下参数
			max_allowed_packet=100M;这个值当然要大于你导入文件的大小。
			wait_timeout=2880000
			interactive_timeout = 2880000;mysql的连接时间,如果没有该配置可以加上
		windows环境下的命令:
		
		
		图中1进入mysql的安装目录bin目录下;
		图中2:mysql -u root -p test  命令意思是root账户进入test数据库下点击回车数据密码
		会出现mysql>表示链接进入test数据库。
		导入数据文件:
		
		如上图1输入命令:source e:\data\user_prize.sql意思是执行user_prize.sql文件
		如上图2:warning都是0表示导入成功。
		希望上面的总结对大家有所帮助。


		
显示全文