[EF][Errors] SQLite DB 複製相同欄位資料到 SQL Azure DB 的例外錯誤記錄

  • 2719
  • 0

摘要:[EF][Errors] SQLite DB 複製相同欄位資料到 SQL Azure DB 的例外錯誤記錄

例外錯誤1:

String or binary data would be truncated.\r\nThe statement has been terminated.

問題來源:出現這個錯誤是原本在SQLite的欄位型態是varchar(50),但由於SQLite實際儲存資料時是可以超過長度50也不會發生錯誤,

所以被儲存在SQLite的資料長度超過50字,又複製到SQL Azure相同欄位型態是varchar(50),超過了字串長度,而發生這個錯誤。

 

解決方法: 依照實際所需的最大資料長度,去修改SQL Azure的varchar長度即可。

 

例外錯誤2:

The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.\r\nThe statement has been terminated

問題來源:SQLite與SQL Azure的資料型別都是DateTime,但SQLite其實儲存的都是字串,而且日期範圍可以從0001-01-01到9999-12-31都沒問題,但是SQL的DateTime範圍是1753-01-01(參考SqlDateTime.MinValue 欄位),如果說有小於1753/01/01的日期想新增到SQL Azure就發生上述的例外錯誤訊息。

 

解決方法: 可以在設定日期的時候,稍作判斷日期是否小於1753/01/01,依照需求更改為其它的日期數值,避免這種錯誤發生。