二进制数据截断的错误消息(消息8152)

时间:2016-09-06 09:34:42

标签: sql sql-server database

当数据插入某个表时,我收到错误的错误消息。

该字段的数据类型为Varchar(20),插入的数据为最大值 数据长度为6。

我不明白问题在哪里。虽然我可以通过添加

来避免这种情况
SET ANSI_WARNINGS OFF

但它解决方法不是解决方案:

Details

4 个答案:

答案 0 :(得分:1)

您的列SchemaName maxlength 属性较小似乎是您要插入的值。

根据您的数据更新列长度。

import java.util.HashMap;
import java.util.Map;

import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;

String s = "{\"Welcome\":1,\"Hi\":2,\"Hello\":1,\"Jin\":1}";
ObjectMapper mapper = new ObjectMapper();


Map<String, String> map = mapper.readValue(s, new TypeReference<HashMap<String, String>>() {
});

map.forEach((k, v) -> System.out.println("Key is " + k + " value is " + v));

答案 1 :(得分:1)

我刚刚找到了这个问题的根本原因。 实际上我试图将sysname数据类型值插入varchar()。 因此,必须指定适当的长度来保存sysname数据类型。

答案 2 :(得分:0)

您的目标表不足以容纳您尝试插入的数据。看来你的目标大小是varchar(256),但是你给了varchar(10)。只需扩展列大小即可解决此问题。

运行此DDL

Alter table temp alter column SchemaName varchar(256)

答案 3 :(得分:0)

当您的列的大小较小时会出现此错误。 更新列的大小。