字符串或二进制数据将被截断。该声明已终止。系统.Data.SqlClient.SqlException(0x80131904)

问题描述 投票:0回答:3

字符串或二进制数据将被截断。该声明已终止。

System.Data.SqlClient.SqlException(0x80131904):字符串或二进制数据将被截断

sql-server asp.net-mvc entity-framework
3个回答
12
投票

当 C#(模型)尝试保存 SQL SERVER 数据库表中定义的大小较小的列的数据记录时抛出此异常,其中传递给该列字符串长度的值较大。

要修复此错误,您只需使用 SQL Server 脚本更改 SQL SERVER 数据库中的表列即可。

仅增加表中列的大小即可。无需在 PROD/TEST 环境中重新部署应用程序。


3
投票

请参考下面的示例。

CREATE TABLE MyTable(Num INT, Column1 VARCHAR(3))

INSERT INTO MyTable VALUES (1, 'test')

查看第 1 列,其大小为 3,但给定值的长度为 4,因此您会收到错误。

修复错误:

您应该传递小于或等于其大小的字符串值,即 3 个字符,如下所示。

INSERT INTO MyTable VALUES (1, 'tes')

如果你想抑制这个错误

您可以将以下 ansi_warnings 参数设置为关闭

SET ansi_warnings OFF

如果我们使用 ansi_warnings 作为 OFF,错误将被抑制,并且任何可以放入列中的内容都将被插入,其余的将被截断。

INSERT INTO MyTable VALUES (1, 'test') 

字符串“tes”将存储在您的表中,并且不会返回任何错误。


0
投票

我知道这是一个老问题,但我收到了相同的错误消息,而且根本原因对我来说是不同的,所以我将发布我的解决方案,以防其他人遇到同样的问题。

在我的应用程序代码中,我将项目添加到数据表中,如下所示:

table.Rows.Add(myObj);

我需要做的是这样添加:

table.Rows.Add(myObj.Property1, myObj.Property2, myObj.Property3);

更改应用程序代码后,错误消息消失,我能够插入数据库。

© www.soinside.com 2019 - 2024. All rights reserved.