2011-04-22 112 views
3

我有一個表,我正在使用ASP.NET MVC創建一個對象並保存它。它一直工作得很好。不知何故,最近,我開始在生產機器上收到此錯誤消息:LINQ:System.Data.SqlClient.SqlException:字符串或二進制數據將被截斷

System.Data.SqlClient.SqlException:字符串或二進制數據將被截斷。

我似乎無法在我的開發機器上覆制相同的錯誤。無論如何要找出造成這個問題的是什麼專欄?我正在運行MSSQL 2008 R2 Express。

回答

1

由插入數據和數據庫中定義的列之間的數據長度不匹配引起。它表示數據庫將不得不從您的插入中刪除數據以便能夠存儲它。

您可能會仔細看看內部異常,我並不確定,但我認爲您會在那裏找到有關引發該錯誤的列的更多信息。是的,你應該防止用戶插入太長的值並在你的模型中捕獲這些值。

如果你爲什麼不想實現額外的驗證,你應該記錄與你嘗試插入/更新的內容的異常,然後將這些值與db進行比較。

+0

我似乎無法複製我的開發機器上的問題,只在服務器上。 – Dean 2011-04-28 04:42:42

+0

因此,我會實現登錄到兩個。如果錯誤再次發生,您現在可以獲得導致錯誤的詳細數據。在大多數情況下,複製錯誤並不容易,因爲您並不完全知道用戶已經完成了哪些操作來完成此操作。當然總會有一個DAU – sra 2011-04-28 05:30:16

5

當您嘗試插入比SQL Server上定義的字段大小更長的數據時,通常會發生這種情況。您可以增加數據庫中字段的大小來解決問題。如果您接受用戶輸入並將其保存到數據庫,則應根據數據庫字段的已定義最大大小對其進行驗證。

相關問題