1. 程式人生 > >[Error]EOL while scanning string literal

[Error]EOL while scanning string literal

專案中有個定時任務,每天取到一些表資料傳到一個外部介面,但是最近總是有異常,今天查了下原因。

首先本地和測試環境測試這個程式都沒問題,只有線上環境會在日誌中丟擲異常,猜測異常主要產生的原因是資料的異常。

但是哪些資料有異常,由不得而知,於是增加了程式的輸出日誌和資料列印,通過幾次的執行定位了發生錯誤的函式和資料記錄。

異常是這樣的:

EOL while scanning string literal: <string>, line 1, pos 7


google一下,這個異常造成的原因是字串,引號沒有成對出現,也就是類似下面的情況

str('1)
Traceback (most recent call last):
  File "<string>", line 1, in <fragment>
EOL while scanning string literal: <string>, line 1, pos 7

想一想程式中是沒有這樣的問題,那問題就來自資料庫中的記錄了,經過排查發現數據庫中有個欄位最大長度是65k,而存入的資料大於65k,整個字串就被截斷了。

整個字串不是一般的字串,而是一個字典的字元形式,類似 str(dictA)

dicA某個key或者是value正好被截斷 例如從{“name”:“orangleiu”}  截斷為 {"name":"orang 

所以在取出來的轉換成str型別的時候就報錯了。

加上異常處理和欄位增長長度解決了問題。