在windows和linux之间移动mysql数据库时,行结尾是否重要?



我在windows机器上导出MySQL数据库(运行XAMPP),然后导入到Linux服务器(使用cmdline或phpMyAdmin import "filename.sql")dbdump文件混合了LF/CRLF行结尾,我知道Linux使用LF作为行结尾。这会造成问题吗?由于

我预计每个平台上的mysql程序都将期望"它";行结束符的风格。老实说,我不知道在每个平台上,它是否"足够聪明"。知道如何处理每一种文件。(仔细想想,也许是……)好吧,有一种方法可以确定…

你说文件有混合(?!)行尾?这很不典型……

然而,有现成的[Unix/Linux]实用程序,dos2unixunix2dos,可以处理这个问题-我很确定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作为行结尾是没有问题的。

但是如果你的数据(即字符串值)包含不同的行结尾,这些行结尾将不会被转换。

相关内容

  • 没有找到相关文章

最新更新