代码之家  ›  专栏  ›  技术社区  ›  Gabe Moothart

在nhibernate中调试“字符串或二进制数据将被截断”错误

  •  2
  • Gabe Moothart  · 技术社区  · 14 年前

    我正在调试应用程序中的间歇性截断错误。我的日志中的错误如下:

    System.Data.SqlClient.SqlException: String or binary data would be truncated.
    The statement has been terminated. Generated: Tue, 02 Nov 2010 03:55:18 GMT
    
    NHibernate.Exceptions.GenericADOException: could not insert:
    [DataModel.Product][SQL: INSERT INTO [Product] (Fields) VALUES (?, ?,...);
    select SCOPE_IDENTITY()] ---> 
    System.Data.SqlClient.SqlException: String or binary data would be truncated. 
    The statement has been terminated.    
    at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
    

    请注意,该错误不为引发该错误的SQL提供参数值,只提供占位符: (?, ?,...) . 有没有办法从NHibernate那里得到这些?像这样:

    try {
        ...
        Session.Flush(); // throws
    }
    catch (GenericADOException ex) {
    
        // want to get the bad parameter values, 
        // so I can re-throw a more helpful exception
    }
    
    5 回复  |  直到 14 年前
        1
  •  1
  •   Diego Mijelshon    14 年前

    <log4net>
      <appender name="Debug" type="log4net.Appender.DebugAppender">
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date %message%newline" />
        </layout>
      </appender>
      <logger name="NHibernate.SQL">
        <level value="DEBUG"/>
        <appender-ref ref="Debug"/>
      </logger>
    </log4net>
    

        2
  •  6
  •   AYK    12 年前

    string or binary data truncated.... Nhibernate nvarchar(50)

        3
  •  2
  •   cbp    14 年前

        4
  •  1
  •   Callie J    14 年前