版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1333556
操作背景:
我需要从服务器的数据库中导出.sql文件,然后导入到另一台进行演示的笔记本中,使用的是phpStudy2014,服务器中的是2013版本。
出现问题:
其中我一共规范操作,导出了五个.sql文件,在进行另一台笔记本导入时发现,仅有两个更可以成功导入,另外三个显示各种报错。
情景一:报错如下图所示
我的第一反应就是因为 字段ID是AUTO_INCREMENT所影响的,因为很久之前的一次操作也是类似,然而跟这个不同。而同学给的建议是版本的问题,所以我直接在服务器中进行的一次重命名后的数据库导入测试,发现是同样的报错,所以排除版本问题;另外有个伙伴建议将ID设为主键,虽然我觉得没什么关系,在设置主键是发现有分区的限制,即要求主键的设置必须包括分区字段什么的,没看懂。
最后,我试着将对应的表chdata中的ID字段的自增功能去掉,然后单个表测试导入,发现没问题,所以直接将这个数据库分成了两部分,一部分就是单个的chdata表,剩下的作为另一部分进行两次导入,然而在第二次导入时发现,出现这个报错,如下图:
粗略看来就是表关系的外键影响,最后有单独把表meter提取出来进行导入,发现还是这样的报错,但是数据没看到有什么问题,巧合的是发现,有个缩小版的跟这个差不多的数据库,在进行同样的操作过程却没有报错,即将chdata,meter,其他表分成三部分依次导入,等有了好的解决方法再进行正确的操作。
情景二:报错如下图所示
首先,要说的是,我最初是用了phpAdmin的操作界面,报错是因为文件过大,发现这个文件有2G多,于是网上搜索到需要更改php.ini文件里的三个与上传相关的范围限制
即对php.ini中的upload_max_filesize, memory_limit 和post_max_size这三处默认值大于你导入文件的大小,通过修改,重启apache。不过即便我改到了4000M依旧没解决,最后顺手点了一下 phpStudy 自带的MySQL-Front管理,上图即是进行数据库导入时的最后时刻报的错误。然后有小伙伴建议先运行下面的语句:
set global max_allowed_packet=100 000 000;
set global net_buffer_length=100000;
SET GLOBAL interactive_timeout=28800 000;
SET GLOBAL wait_timeout=28800000
虽然没有效果,但解决问题本就是个摸索过程,所以说,自学PHP真的太要命了,没人说正确答案,全要各种百度,求助,瞎摸索。最后,鬼使神差的我直接用了MySQL-Front分两次导出了这个数据库文件,虽然时间花费久一点,但是很顺利,并且发现得到的.sql文件比之前的要大1G,难道是phpAdmin导出大文件有缺失的问题所在,也有人建议navicat工具,或许值得参考。当然我继续用MySQL-Front 分两次导入了一个新建的数据库,注意导入前的编码选择!半小时等待后,成功完成……
总结:感觉自己完全就是一个白痴嘛,啥都不懂,白自学了这么久,虽然百度很强大,但是毕竟没找到解决的方法,所以说有一个有经验的人帮忙提醒该有多好,至少不会浪费太多时间,值得一提的是我在百度里竟然收到了自己的提问,虽然只有一个人回复建议,不管怎样还是非常感谢,听了好多小伙伴的建议本就是一个学习的过程,毕竟别人花时间帮你思考就应该给以尊敬
最后希望自己能有更快的进步,赶紧学好技术,进入小牛领域,也希望能给看到这篇文章的人一点帮助,加油!