[英]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 中,這包括:
為此,所有空白字符都被認為是相同的。 因此在 SQL 代碼中使用 CRLF 或 LF 作為行尾是沒有問題的。
但是,如果您的數據(即字符串值)包含不同的行尾,則不會轉換這些行尾。
我預計每個平台上的mysql
程序都需要“它的”行結束樣式。 老實說,我不知道在每個平台上,知道如何處理每種文件是否“足夠聰明”。 (想想看,也許確實如此……)好吧,有一種可靠的方法可以找出答案……
你說文件有混合(?!)行尾? 這是非常不典型的...
然而,有現成的 [Unix/Linux] 實用程序dos2unix
和unix2dos
可以解決這個問題——我很確定 Windows 也有它們。 在使用之前,只需通過適當的轉儲文件運行轉儲文件即可。
您可以毫無問題地將數據庫從 Windows 導入到 Linux。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.