【备忘】navicat mysql导入导出小经验
这是个很重要的小经验,今天特地记下来!
故事背景
今天做公众号功能,用到MySQL数据库,将数据从线上导出,然后在本地MySQL导入,此时问题就发生了:“1265 - Data truncated for column 'status' at”。
这是在本地导入的时候报的错。
经过测试发现,在线上导出时,我做了个表结构的修改,也就是把enum类型的字段增加了一个值并且将数字的可选项改为了字符串的可选项。这时再导出到本地,再在本地导入到MySQL就报错了。
环境
MySQL:
线上:5.7.*
线下:5.7.*
测试
经过多次测试以及经验判断,排除版本问题,因为之前也有类似操作,但是这次出错了。
再根据错误提示,'status'字段,去搜索了导出的MySQL文件里所有包含"status"的字段,排除很久没有更改过的,就只有一个表是我刚才修改过的包含status字段的表,又根据错误提示“Data truncated......”,意思是截断数据,所以我在线上做了备份后,再把我修改的这个表的数据清除,然后再导入到本地,结果导入成功了。
结论
本次问题是修改了enum类型字段的可选值导致的数据导入失败的问题。
处理方法
如果数据不重要可清除表中的数据,再导入到本地MySQL。
如果你的数据很重要,那先备份,然后清除表数据,再导入空表,再把备份的数据导入到空表中。
也可以修改status这一列的数据为空再导入。有可能你要先修改status字段的值才能导入。
以后要怎么做
以后建议先在本地修改数据结构,出了问题也是小问题,解决之后再同步到线上。
小贴士:
处理数据之前要记得备份,以防万一。。。。。。
END
你可能想看: