1. 程式人生 > >mysql匯入檔案出現Data truncated for column 'xxx' at row 1的原因

mysql匯入檔案出現Data truncated for column 'xxx' at row 1的原因

mysql匯入檔案的時候很容易出現"Data truncated for column 'xxx' at row x",其中字串裡的xxx和x是指具體的列和行數.

有時候,這是因為資料型別的不對應,或者字串長度不夠而造成的.

但是,經常出現row 1就報錯,並且感覺它沒什麼不對的樣子.

這往往是因為windows的回車換行"\r\n"作怪,下面的測試說明了這種情況.

我有一個train.csv的資料檔案,我用python修改後儲存為c.csv.

但是,我用相同的命令把它們匯入到mysql時,train能匯入,c卻出錯.



我把行結束符從"\n"換成"\r\n"後,匯入成功.


用notepad開啟這兩個檔案,會發現train根本沒有換行,而c則有換行.

這說明train裡只有"\n",因此notepad無法識別到換行,而c裡則是"\r\n".


然而用python生成c.csv的時候,輸出只有"\n",這說明python在win下會自動把"\n"變成"\r\n".

還有一點是,除了notepad外的大部分win下的編輯器,都既能識別"\n"又能識別"\r\n".

因此只有用notepad才能知道到底是"\n"還是"\r\n",或者用winHex等工具直接看ascii碼.

最後的結論是,注意這個資料檔案的換行到底是"\n"還是"\r\n".