一:问题描述
这几次执行mongodb初始化脚本,发现一个问题:
将windows下的脚本上传到Linux下后,执行时,会报错。
如:
mongo -u root -p mongo123 admin --port 8000 < initdata-bmis.sql > initdata-bmis.log
initdata-bmis.log文件里有很多错误:
SyntaxError: Unexpected token ILLEGAL
但是直接复制粘贴脚本内容在命令行里执行却不报错。或者将内容复制粘贴到Linux下新建的文件里,执行也不报错。且该脚本确定没有语法错误。
二:出错原因
格式问题,windows和linux/unix的换行和空行符是不同的。
三:解决办法
方法一:
在notepad++中编辑时虽然是以utf8格式编码,但是还有个地方是需要转码的,windows和linux/unix的换行和空行符是不同的,所以在windows下编辑的脚本放到linux上就运行不了了,后查到在notepad++中可以进行转码。
方法二:
在Linux上安装dos2unix,然后进行转码
yum install -y dos2unix
dos2unix initdata-bmis.sql
再次执行就不报错了:
mongo -u root -p mongo123 admin --port 8000 < initdata-bmis.sql > initdata-bmis.log