【问题标题】:getting {"could not execute batch command.[SQL: SQL not available]"} error from NHibernate从 NHibernate 得到 {"could not execute batch command.[SQL: SQL not available]"} 错误
【发布时间】:2012-02-28 13:29:18
【问题描述】:

我查看了其他相关帖子,但找不到任何解决方案。
有时在 sesstion.Flush() 上出现以下错误:

{"无法执行批处理命令。[SQL: SQL 不可用]"}

和内部异常:

{"UPDATE 语句与 FOREIGN KEY 约束 FK1377052553ABF955 冲突。冲突发生在数据库 ProcessDebug,表 dbo.Adjustment,列 'AdjustmentId'。语句已终止。"}

一个Process类映射:

   References(p => p.CurrentAdjustment)
        ;

    References(p => p.DefaultAdjustment)
        ;

    HasMany(p => p.Adjustments)
        .Cascade.AllDeleteOrphan()
        .Inverse()
        ;

以上所有这些属性都是调整类型。 只要我偶尔遇到这个错误,我就无法追踪它。对于一个实体,它现在可能会发生,但下次不会在同一段代码中发生......

知道可能导致问题的原因吗?
我正在使用 NH 3.2 和 FluentNhibernate
提前致谢

【问题讨论】:

  • 你有想过这个吗?我有同样的错误,但只有在事务中调用 AddOrUpdate 方法时才出现。
  • @MrAH,我猜这发生在两台机器同时在同一行上工作时。不过我不确定。我们改变了很多东西,最后,我们没有得到错误。但我认为处理相同的行会导致错误。

标签: c# sql nhibernate c#-4.0 fluent-nhibernate


【解决方案1】:

在我的情况下,其中一个数据库列中为“NULL”。检查您的数据库数据。

FOREIGN KEY -> 这意味着您可能有 null i 列,用于“加入”。

附言使用 SQL Profiler 并检查 nHibernate 生成的 SQL。

【讨论】:

    【解决方案2】:

    您需要查看实际尝试执行的 sql。

    您似乎正在尝试将主键(“AdjustmentId”)更新为不存在的内容。因此外键违规。

    【讨论】:

      【解决方案3】:

      这似乎是关于你的数据库,而不是你的 nHibernate 代码,检查日志文件中的 SQL,然后尝试执行它

      【讨论】:

        【解决方案4】:

        在我的例子中,我添加了一个数据类型为 DateTime 的列, 我插入2100/2/2得到这个错误,但是当插入更合理的时候2001/2/2得到成功,

        所以问题可能出在您的数据中,应该遵循数据库中的一些规则。

        【讨论】:

          【解决方案5】:

          要找到真正的原因,您需要查看 nHibernate 生成的 SQL。您可以使用 nHibernate 日志或 nHibernate 分析器来获取这些 SQL。与上述错误消息相关的一些常见问题包括:

          • 字符串或二进制数据将被截断。每当您提供的字符串值大于数据库中定义的 varchar/nvarchar 字段大小时,就会出现此问题。
          • 预期的主键或外键值为 null

          【讨论】:

            【解决方案6】:

            可能不是 NHibernate 的问题! 请在数据库中检查哪一列不是 Null/Null。为此,我将这些列设置为空。 你可以做任何事!在表上的那些列上插入或设置 null 时设置值。

            【讨论】:

              猜你喜欢
              • 2021-09-06
              • 2015-06-25
              • 2020-09-26
              • 2021-08-11
              • 2022-12-26
              • 2015-02-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多