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".