Log4J - SQL数据截断

时间:2013-07-23 17:17:54

标签: java sql-server logging log4j

我在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

也许有人已经知道如何解决这个问题,所以我问过。

感谢阅读。

1 个答案:

答案 0 :(得分:1)

我解决了这个问题。我错了:

  

当您尝试将数据插入列时,通常会抛出它   超过它的大小或限制,但不幸的是,这不是我的情况。

因为是的,这是我的理由。我有一个SmallInt类型截断的列,因为我插入了非常大的数字,所以我切换到INT并解决了问题。此外,如果它发生在Strings上,您可以尝试将VARCHAR更改为NVARCHAR,因为varchar只需要ASCII,而nvarchar也可以使用UNICODE。