最近在制作一个项目快照的功能,把一个项目的所有数据导出到csv文件中,保存为快照,然后在另一个项目恢复快照,快照功能可以做项目数据备份,也可以在自动化测试中快速部署环境,让脚本脱离运行环境
其中在恢复快照中用到了mysql的csv导入数据功能,需要生成一个如下的sql语句
LOAD DATA LOCAL INFILE ‘/root/cachefile/03778aa2-03e0-4039-a0df-e53971305143/357862214685448856.csv’ INTO TABLE edo_0 CHARACTER SET UTF8 FIELDS TERMINATED BY ‘,’ ENCLOSED BY ‘”‘ ESCAPED BY'”‘ LINES TERMINATED BY’\r\n’ IGNORE 1 LINES (id,origin_id,project_id,name,parent_id,element_type_id,floor_id,system_id,element_id,file_revision_id)
本地调试完一切ok
发布到测试环境以后死活导入不进去,反复试探定位,折腾了一天多,最后定位到在本地生成的csv文件可以导入,但是服务器生成的文件导入不进去
使用beyond compare对比文件,发现文件文本内容完全一样,没有差别,唯一的区别是显示文件所属操作系统一个是windows一个是unix
再网络搜索,终于找到原因,原来windows生成的文本文件行结束符是’\r\n’ ,而linux文件结束符’\n’ ,没有回车只有换行,改完sql重新发布,问题终于解决
之所以花这么长时间才解决问题,和中间定位的时候文件搞混有关系,中间把linux版的文件down下来试了一次,但是拷贝文件过程中搞混了,
条理很重要
三把刷子
暂无评论