报错:Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints,怎么解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我创建了一个外部连接,并在informix数据库,但我的代码中有以下异常:

DataTable dt = TeachingLoadDAL.GetCoursesWithEvalState(i, bat);

Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.

我知道问题,但我不知道怎么解决。

我制作的第二个表外部联接包含一个复合主键,在前面的外部联接查询中为空。

    SELECT UNIQUE a.crs_e,  a.crs_e  || '/ ' || a.crst crs_name, b.period,
           b.crscls, c.crsday, c.from_lect, c.to_lect,
           c.to_lect - c.from_lect + 1 Subtraction, c.lect_kind, e.eval, e.batch_no,
           e.crsnum, e.lect_code, e.prof_course
    FROM rlm1course a, rfc14crsgrp b, ckj1table c, mnltablelectev d,
         OUTER(cc1assiscrseval e)  
    WHERE a.crsnum = b.crsnum 
    AND b.crsnum = c.crsnum 
    AND b.crscls = c.crscls 
    AND b.batch_no = c.batch_no 
    AND c.serial_key = d.serial_key  
    AND c.crsnum = e.crsnum  
    AND c.batch_no = e.batch_no  
    AND d.lect_code= e.lect_code 
    AND d.lect_code = .... 
    AND b.batch_no = ....

这个问题发生在表中。如何解决这个问题?

提问于
用户回答回答于

可以手动向生成的代码添加一个try/catch块,比如这样,然后在引发异常时中断:

然后在命令窗口内调用GetErrors方法在表上获取错误。

对于C#,命令如下? dataTable.GetErrors()

对于VB,命令是? dataTable.GetErrors

这将显示所有有错误的数据行。你可以看看RowError对于每一种情况,都应该告诉您无效的列以及问题。因此,要查看错误中的第一个datarow的错误,命令如下:

? dataTable.GetErrors(0).RowError

或者在C#中? dataTable.GetErrors()[0].RowError

用户回答回答于

dataset.TableA.Clear();
dataset.EnforceConstraints = false;
dataAdapter1.daTableA.Fill(dataset, TableA");

扫码关注云+社区