簡體   English   中英

在 windows 和 linux 之間移動 mysql 數據庫時,行結尾是否重要?

[英]Do line endings matter when moving mysql database between windows and linux?

我正在 8832360105188 機器(運行 XAMPP)上導出 MySQL 數據庫,然后導入到 Linux 服務器(使用 cmdline 或 phpMyAdmin IMPORT“filename.sql”) dbdump 文件混合了 LF/CRLF 行結尾,我知道 881145868167 使用 LF用於行尾。 這會導致問題嗎? 謝謝

根據ctype.h ,MySQL 的 SQL 分詞器會跳過所有空白字符。

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() function 測試在字符集cs中,字符i是空格。 例如在 ASCII 中,這包括:

  • 空間
  • 標簽
  • 換行符 (\n)
  • 回車 (\r)
  • 垂直制表符 (\v)
  • 換頁 (\f)

為此,所有空白字符都被認為是相同的。 因此在 SQL 代碼中使用 CRLF 或 LF 作為行尾是沒有問題的。

但是,如果您的數據(即字符串值)包含不同的行尾,則不會轉換這些行尾。

我預計每個平台上的mysql程序都需要“它的”行結束樣式。 老實說,我不知道在每個平台上,知道如何處理每種文件是否“足夠聰明”。 (想想看,也許確實如此……)好吧,有一種可靠的方法可以找出答案……

你說文件有混合(?!)行尾? 這是非常不典型的...

然而,有現成的 [Unix/Linux] 實用程序dos2unixunix2dos可以解決這個問題——我很確定 Windows 也有它們。 在使用之前,只需通過適當的轉儲文件運行轉儲文件即可。

您可以毫無問題地將數據庫從 Windows 導入到 Linux。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM