[解決済み] 制約の有効化に失敗しました。1つ以上の行が非Null、ユニーク、または外部キー制約に違反する値を含んでいます。
質問
外部結合を作成して
informix
データベースで、次のような例外が発生しました。
DataTable dt = TeachingLoadDAL.GetCoursesWithEvalState(i, bat);
制約の有効化に失敗しました。1 つまたは複数の行に値が含まれています。 NULL 以外、ユニーク、または外部キー制約に違反しています。
問題は分かっているが、どうすれば解決できるのか分からない。
外部結合を行う2番目のテーブルには複合プライマリキーがあり、前の外部結合クエリではNULLになっています。
EDITです。
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 = ....
問題はテーブルで発生します
cc1assiscrseval
. 主キーは (batch_no, crsnum, lect_code) です。
この問題を解決するにはどうしたらよいですか?
EDITです。
によると
@PaulStock
のアドバイスがあります。
彼の言うとおりにすると、私は得をします。
? dt.GetErrors()[0] {System.Data.DataRow} {System.Data.DataRow}。HasErrors: true ItemArray: {object[10]}のように RowError: "列 'eval' は DBNull.Value." を許可していません。
そこで、次のように置き換えることで問題を解決しました。
e.eval
を ,
NVL (e.eval,'') eval
.これで私の問題は解決しました。
どうもありがとうございました。
どのように解決するのですか?
この問題は、通常、次のいずれかが原因で発生します。
- AllowDBNullに設定されていないカラムに対してnull値が返される。
- 同じ主キーで重複した行が返される。
- データベースとデータセット間のカラム定義(例:charフィールドのサイズ)の不一致。
クエリをネイティブで実行してみて、結果セットが大きすぎなければ、結果を見てみてください。NULL値を排除しているのであれば、主キーのカラムが重複しているのではないかと推測されます。
あるいは、正確なエラーを確認するために、生成されたコードに Try/Catch ブロックを手動で追加して、例外が発生したときにブレークさせることもできます。
次に、コマンドウィンドウで
GetErrors
メソッドを、エラーが発生したテーブルに対して実行します。
C#の場合、コマンドは次のようになります。
? dataTable.GetErrors()
VBの場合、コマンドは
? dataTable.GetErrors
これで、エラーが発生したすべてのデータローが表示されます。次に
RowError
をクリックすると、無効なカラムとその問題が表示されます。つまり、エラーのある最初のデータロウのエラーを見るには、次のようにコマンドを実行します。
? dataTable.GetErrors(0).RowError
またはC#では次のようになります。
? dataTable.GetErrors()[0].RowError
関連
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
[解決済み] MySQL エラー: キーの長さがないキー指定
-
[解決済み] MySQL は一意性制約の NULL 値を無視しますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】プログラム実行中に1秒待つ
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?
-
[解決済み】ファイルやアセンブリ、またはその依存関係の1つをロードできませんでした。
-
[解決済み】名前 'ViewBag' が現在のコンテキストに存在しない - Visual Studio 2015