我在 Java 中使用 Log4j 记录到 SQL Server 数据库时遇到了这个问题。当您尝试将数据插入超出其大小或限制的列时,通常会抛出它,但不幸的是,这不是我的情况。它记录了几秒钟,然后……砰!(未能执行 SQL - 数据截断)。
我发送包含 IP 地址的字符串:
log.debug("Connecting to server... 100.0.0.1");
我找到了这个:
表达式可能会无意中导致数据被截断。在以下情况下可能会发生截断:
字符串。例如,如果原始字符串包含双字节字符,则将具有 DT_WSTR 数据类型的字符串数据转换为具有 DT_STR 数据类型的相同长度的字符串(以字符为单位)会导致数据丢失。
有效数字。例如,将整数从 DT_I4 数据类型转换为 DT_I2 数据类型或将无符号整数转换为有符号整数。无意义的数字。例如,将实数从 DT_R8 转换为 DT_R4,或将整数从 DT_I4 数据类型转换为 DT_R4 数据类型。
http://msdn.microsoft.com/en-us/library/ms137867.aspx
也许有人已经知道如何解决这个问题,所以我问。
谢谢阅读。