0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DB2でよく見るSQLCODEと意味まとめ

Posted at

基本構文エラー

SQLCODE = -104

エラー内容:無効な構文、予約語、記号などが含まれている

よくある原因

SQL構文ミス(カンマや括弧忘れ)

DB2の予約語をカラム名に使っている

対処法

該当SQLの前後を確認(例:FROMの後にWHEREが抜けている など)

必要に応じて引用符("column")で囲う

SQLCODE = -204

エラー内容:オブジェクトが存在しない(テーブル、ビュー、関数など)

原因

指定したテーブルやカラムが存在しない(タイポ、スキーマ違い)

開発環境と本番環境でスキーマが異なる

対処法

SELECT * FROM SYSCAT.TABLES で存在確認

フル修飾名(スキーマ.テーブル名)でアクセスする

権限関連エラー

SQLCODE = -551

エラー内容:指定されたオブジェクトに対する権限がない

対処法

GRANT SELECT ON テーブル TO ユーザー; などで明示的に権限付与

ロール・ユーザーの確認を行う

トランザクション/ロック関連

エラー内容:トランザクションがロックタイムアウトまたはデッドロックによりロールバックされた

原因

長時間ロック保持している処理がある

同時アクセスで競合が発生

対処法

トランザクションの粒度を小さくする

ロックの種類や順序を統一する

アプリ側でリトライ処理を入れる

データ整合性エラー

SQLCODE = -803

エラー内容:一意制約(UNIQUE)違反

原因

主キー・ユニークキーに重複した値を挿入しようとした

対処法

挿入前に SELECT で存在確認

MERGE文やON CONFLICT DO NOTHING的な構文の検討(環境次第)

SQLCODE = -407

エラー内容:NOT NULL制約違反(NULLを許容しない列にNULLが挿入された)

対処法

該当カラムがNOT NULLか確認

アプリ側の値設定処理を見直す

SQLCODE = -530 / -531 / -532

エラー内容:外部キー(FK)制約違反

対処法

親テーブルのデータが存在しているか確認(-530)

子テーブルのデータが存在していないか確認(-531, -532)

外部キー制約が有効なまま、削除/挿入順が逆になっていないかチェック

参考リンク

IBM公式:SQLCODE一覧
https://www.ibm.com/docs/ja/db2 (バージョン選択後、"SQL Messages"を参照)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?