我在windows机器上导出MySQL数据库(运行XAMPP),然后导入到Linux服务器(使用cmdline或phpMyAdmin import "filename.sql")dbdump文件混合了LF/CRLF行结尾,我知道Linux使用LF作为行结尾。这会造成问题吗?由于
我预计每个平台上的mysql
程序都将期望"它";行结束符的风格。老实说,我不知道在每个平台上,它是否"足够聪明"。知道如何处理每一种文件。(仔细想想,也许是……)好吧,有一种方法可以确定…
你说文件有混合(?!)行尾?这很不典型……
然而,有现成的[Unix/Linux]实用程序,dos2unix
和unix2dos
,可以处理这个问题-我很确定Windows也有它们。在使用转储文件之前,只需通过适当的转储文件运行它。
从Windows导入db到Linux没有问题。
MySQL的SQL标记器跳过所有空白字符,根据ctype.h
。
https://github.com/mysql/mysql-server/blob/8.0/mysys/sql_chars.cc L94-L95
else if (my_isspace(cs, i)) state_map[i] = MY_LEX_SKIP;
my_isspace()
函数测试字符集cs
中字符i
是否为空白。例如,在ASCII中,这包括:
- 标签
- 换行符( n)
- 回车(r)
- 垂直标签(v)
- form feed (f)
所有的空白字符都被认为是相同的。因此,在SQL代码中使用CRLF或LF作为行结尾是没有问题的。
但是如果你的数据(即字符串值)包含不同的行结尾,这些行结尾将不会被转换。