我有一个表,我正在使用ASP.NET MVC创建一个对象并保存它。它已经工作了一段时间了。不知何故,最近,我开始在生产机器上收到此错误消息:
System.Data.SqlClient.SqlException:字符串或二进制数据将被截断。
我似乎无法在我的开发机器上复制相同的错误。反正有没有找出导致这个的列?我正在运行MSSQL 2008 R2 Express。
答案 0 :(得分:5)
当您尝试插入的数据长于SQL Server上定义的字段大小时,通常会发生这种情况。您可以增加数据库中字段的大小来解决问题。如果您接受用户输入并将其保存到数据库,那么您应该根据定义的数据库字段的最大大小对其进行验证。
答案 1 :(得分:1)
由于插入数据与数据库中已定义列之间的数据长度不匹配而导致。它表示数据库必须从插入中删除数据才能存储它。
您可能会仔细查看内部异常,我不确定它,但我认为您可以找到有关抛出该错误的列的更多信息。是的,您应该阻止用户插入太长的值并在模型中捕获它。
如果你不想实现额外的验证,你应该使用你试图插入/更新的内容记录异常,然后将这些值与db进行比较。