SQL エラー・メッセージ
以下のテーブルは、SQL の数値エラー・コードとそのエラー・メッセージの一覧です。これらのコードは、SQLCODE 変数の値として返されます。
このドキュメントでは、負の値のエラー・コードを一覧表示していますが、JDBC クライアントと ODBC クライアントでは、常に正の値を受け取ります。例えば、ODBC や JDBC のアプリケーションがエラー・コード 30 を返した場合、以下のテーブルではエラー・コード -30 を確認してください。
SQLCODE 0 と 100
この 2 つの SQLCODE は、SQL エラーを表すものではありません。
| エラー・コード | 説明 |
|---|---|
| 0 | 正常に処理が完了しました |
| 100 | (これ以上) データがありません |
-
SQLCODE=0 は、SQL 処理が正常に終了したことを示します。SELECT 文の場合、通常、これはテーブルからのデータの取得に成功したことを意味します。ただし、SELECT で集約演算 (SELECT SUM(myfield) など) を実行する場合、myfield にデータがなくても集約演算は成功し、SQLCODE=0 が発行されます。この場合、SUM は NULL を返し、%ROWCOUNT=1 となります。
-
SQLCODE=100 は、SQL 操作は成功したが処理するデータが見つからないことを意味します。これは、さまざまな理由で発生します。SELECT の場合、指定したテーブルにデータがない、テーブルにクエリの条件を満たすデータがない、行の検索がテーブルの最終行に達した、などの理由があります。UPDATE または DELETE の場合、指定したテーブルにデータがない、テーブルに WHERE 節の条件を満たすデータの行がない、などの理由があります。このような場合、%ROWCOUNT=0 となります。
SQLCODE -400
SQLCODE -400 エラー “深刻なエラーが発生しました” は、一般エラーです。より具体的な SQLCODE エラー・コードが利用可能でない場合に生成されます。
SQL メッセージ・テキストの取得
SQLCODE 数値コードの意味を確認するには、以下の ObjectScript 文を使用します。
WRITE "SQLCODE=",$SYSTEM.SQL.SQLCODE(-nnn)
この SQLCODE()Opens in a new tab メソッドは、ODBC または JDBC からストアド・プロシージャ %SYSTEM.SQL_SQLCODE(-nnn) として呼び出すこともできます。
この場合 (通常は SQL コンパイル時)、エラー・メッセージはエラーの原因となったフィールド、テーブル、ビュー、他の要素の名前を含みます。これらの名前のプレースホルダは <name> 構文規約を使用して示されます。
%msg 変数には、特定のエラーに対する追加のメッセージ・エラー・テキストが含まれる場合があります。詳細は、"Caché SQL の使用法" の “埋め込み SQL の使用法” の章の "システム変数" を参照してください。
返されるメッセージ・テキストの英語版を以下に示します。実際のメッセージ・テキストはロケールの設定によって異なります。
SQLCODE エラーからの ObjectScript の一般的なエラーの生成の詳細は、"インターシステムズ・クラス・リファレンス" の %SYSTEM.ErrorOpens in a new tab クラスを参照してください。
SQL エラー・コードおよびメッセージのテーブル
使いやすさを考慮して、SQL エラー・コードのテーブルは以下のサブテーブルに分けられています。
| エラー・コード | 説明 |
|---|---|
| -1 | 無効な SQL 文です |
| -2 | 'E' の後に指数を表す数字が見つかりません |
| -3 | 引用文を閉じる (") が見つかりません |
| -4 | 識別子、定数、集約、%ALPHAUP、%EXACT、%MVR、%SQLSTRING、%SQLUPPER、%STRING、%UPPER、$$、:、+、-、(、NOT、EXISTS、または FOR のいずれかが先頭にある単語が必要です。 |
| -5 | ORDER に指定された列番号が SELECT リストに一致しません |
| -6 | UNION の後に SELECT 列として ORDER BY 列が見つかりません |
| -7 | 指数が範囲外です |
| -8 | DATEPART()、DATENAME()、DATEADD()、DATEDIFF() の無効な DATEPART コードです |
| -9 | 互換性のない SELECT リストが UNION で使用されています |
| -10 | サブクエリの SELECT リストは必ず 1 つの項目を持つ必要があります |
| -11 | 条件式ではなく、スカラ式が必要です |
| -12 | 識別子、定数、集約、$$、:、(、+、-、%ALPHAUP、%EXACT、%MVR、%SQLSTRING、%SQLUPPER、%STRING、または %UPPER のいずれかが先頭にある単語が必要です。 |
| -13 | ここではサブクエリ以外の式が必要です |
| -14 | ここでは比較演算子が必要です |
| -15 | NOT の後には条件が必要です |
| -16 | for 文では、FOR の後に修飾子 SOME が必要です |
| -17 | for 文では、( の後に for の条件が必要です |
| -18 | IS (あるいは IS NOT) NULL 述語はフィールドにのみ適用できます |
| -19 | 集約関数は WHERE 句および GROUP BY 句の中では使用できません |
| -20 | FROM リストのラベルで名前が重複しています |
| -21 | ポインタ->フィールド参照は INSERT または UPDATE 文で変更できません |
| -22 | 'SELECT *' の後に続ける場合、ORDER には番号ではなく列名を指定する必要があります |
| -23 | ラベルが該当するテーブルでリストされていません |
| -24 | ソート列が不明確です |
| -25 | クエリの終了後に入力が検出されました |
| -26 | FROM 句が見つかりません |
| -27 | フィールドが該当するテーブルで不明確です |
| -28 | ホストの変数名は % か文字のいずれかで始まる必要があります |
| -29 | 該当するテーブルでフィールドが見つかりません |
| -30 | テーブルまたはビューが見つかりません |
| -31 | テーブル内にフィールドが (見つかりません/一意ではありません) |
| -32 | 外部結合記号 ( =* または *= ) が 2 つのフィールド間に必要です |
| -33 | テーブルにフィールドが見つかりません |
| -34 | オプティマイザが使用可能な結合順序を見つけることができませんでした |
| -35 | INSERT/UPDATE/DELETE は更新できないビューを許可していません |
| -36 | WITH CHECK OPTION (CHECKOPTION クラスパラメータ) は更新できないビューを許可していません |
| -37 | SQL スカラ/集約/単項関数はストリーム・フィールドでサポートされていません |
| -38 | テーブルにマスタ・マップがありません |
| -39 | テーブルに RowID フィールドがありません |
| -40 | ODBC のエスケープ拡張はサポートされていません |
| -41 | 外部関数の呼び出しは、'$$tag^routine(...)' の形式になる必要があります |
| -42 | パターン・マッチの後ろに続く引用を閉じる ("") が見つかりません |
| -43 | テーブルは #IMPORT スキーマ名リスト内で不明確です |
| -44 | 重複メソッドまたはクエリの指数部です |
| -45 | ObjectScript クエリに重複メソッドがあります |
| -46 | ObjectScript クエリ・ボディに必須メソッドがありません |
| -47 | 無効なメソッドまたはクエリの指数部です |
| -48 | トリガイベントの無効なトリガ REFERENCING 節です |
| -49 | トリガを起動する言語が SQL 以外の場合、トリガ REFERENCING 句を指定できません |
| -50 | トリガを起動する言語が SQL 以外の場合、トリガは UPDATE OF <fieldlist> 節を指定します |
| -51 | SQL 文が必要です |
| -52 | カーソルは既に宣言されています/宣言されていません |
| -53 | 新しい値として定数または変数が必要です |
| -54 | VALUES の後に (最後の添え字が省略された) 配列識別子が必要です |
| -55 | 無効な GRANT <role> TO または REVOKE <role> FROM です |
| -56 | GRANT/REVOKE 動作は、このタイプのオブジェクトに対応していません |
| -57 | トリガを起動する言語が SQL 以外の場合、トリガは WHEN 句を指定します |
| -58 | トリガ UPDATE OF フィールド_リスト句で重複フィールドが見つかりました |
| -59 | 複数のフィールドを持つことはできません |
| -60 | %ALTER、SELECT、UPDATE などの動作が必要です |
| -61 | カーソルを更新できません |
| -62 | INSERT/UPDATE に新しい値を追加する必要があります |
| -63 | データの例外 - 無効なエスケープ文字です |
| -64 | 互換性のない SELECT リストが INSERT で使用されています |
| -65 | 正の整数の定数または変数が必要です |
| -66 | SELECT リストに冗長なフィールドがあります |
| -67 | 暗黙結合 (矢印構文) は ON 節ではサポートされません |
| -68 | ON 節で、従来の外部結合 (=*, *=) がサポートされなくなりました |
| -69 | SET <field> = <value expression> を WHERE CURRENT OF <cursor> で使用できません |
| -70 | Multi-Line フィールドは LIKE、包含 ([)、または NULL 比較でのみ有効です |
| -71 | Multi-Line フィールドは比較の左側オペランドである必要があります |
| -72 | Multi-Line フィールドが ORDER BY 節で無効です |
| -73 | 集約関数が ORDER BY 節でサポートされていません |
| -74 | <select-list> の別名に重複が見つかりました |
| -75 | TRIM 関数では FROM よりも前に <trim_spec> および/または <trim_char> が必要です |
| -76 | SELECT リストと INTO リストの要素数が一致していません |
| -77 | この JOIN コンテキストでは条件付きの列参照ができません |
| -78 | 無効なトランザクション状態です |
| -79 | 参照するキーと参照されるキーは、同じサイズである必要があります |
| -80 | 整数が必要です |
| -81 | 列の制約が必要です |
| -82 | 複数のテーブルの %DESCRIPTION 定義が見つかりました |
| -83 | 複数のテーブルの %FILE 定義が見つかりました |
| -84 | 複数のテーブルの %NUMROWS 定義が見つかりました |
| -85 | 複数のテーブルの %ROUTINE 定義が見つかりました |
| -86 | 無効なフィールド定義です。データ型が定義されていません。 |
| -87 | 無効なテーブル名です |
| -88 | 無効なフィールド名です |
| -89 | 無効なインデックス名です |
| -90 | 無効なビュー名です |
| -91 | トランザクション・モードは複数回指定することはできません |
| -92 | READ WRITE が指定されている場合は level of isolation を READ UNCOMMITTED や READ VERIFIED にすることはできません |
| -93 | DIAGNOSTICS SIZE の number of conditions は数値でなければなりません |
| -94 | OUTER JOIN の使用はサポートされていません |
| -95 | オペレーション・テーブルによって操作は不許可にされています |
| -96 | 指定された level of isolation はサポートされていません |
| -97 | 重複している select-list の名前が見つかりました |
| -98 | ライセンスの違反です |
| -99 | 特権の違反です |
| エラー・コード | 説明 |
|---|---|
| -101 | 既に開いているカーソルを開こうとしています |
| -102 | 開いていないカーソルで (FETCH/CLOSE/UPDATE/DELETE/...) という操作を実行しようとしました |
| -103 | UPDATE または DELETE を実行しようとしましたが、カーソルはどの行にもありません |
| -104 | INSERT でフィールドの確認に失敗しました。または、値を DisplayToLogical あるいは OdbcToLogical で変換できませんでした |
| -105 | UPDATE でフィールドの確認に失敗しました |
| -106 | DELETE する行が見つかりません |
| -107 | RowID またはフィールドに基づく RowID を UPDATE できません |
| -108 | 必要なフィールドが見つかりません。INSERT または UPDATE を実行できません |
| -109 | UPDATE に指定された行が見つかりません |
| -110 | ファイルのロックが重複しています |
| -111 | "既定値のみ" の RowID またはフィールドに基づく RowID に INSERT できません |
| -112 | アクセス違反です |
| -113 | %THRESHOLD 違反です |
| -114 | 一致する行が既に別のユーザにロックされています |
| -115 | 読み取り専用のテーブルでは、INSERT、UPDATE、DELETE できません |
| -116 | 値リストとテーブル列数の INSERT/UPDATE が一致していません |
| -117 | 集約関数はビューでサポートされていません |
| -118 | 不明なあるいは一意でないユーザもしくはロールです |
| -119 | UNIQUE あるいは PRIMARY KEY 制約が INSERT の一意性チェックに失敗しました |
| -120 | UNIQUE あるいは PRIMARY KEY 制約が UPDATE の一意性チェックに失敗しました |
| -121 | FOREIGN KEY 制約は、参照テーブルで行の INSERT の参照先チェックに失敗しました |
| -122 | FOREIGN KEY 制約は、参照テーブルで行の UPDATE の参照先チェックに失敗しました |
| -123 | FOREIGN KEY 制約は、参照元テーブルで行の UPDATE の参照チェックに失敗しました |
| -124 | FOREIGN KEY 制約は、参照元テーブルで行の DELETE の参照チェックに失敗しました |
| -125 | UNIQUE あるいは PRIMARY KEY 制約が、制約条件の生成で一意性チェックに失敗しました |
| -126 | RESTRICT の REVOKE に失敗しました |
| -127 | FOREIGN KEY 制約が、制約条件の生成で参照一貫性チェックに失敗しました |
| -128 | スカラ関数 %OBJECT() への引数はストリーム・フィールドである必要があります |
| -129 | SET OPTION のロケール・プロパティの値が不正です |
| -130 | Before Insert トリガに失敗しました |
| -131 | After Insert トリガに失敗しました |
| -132 | Before Update トリガに失敗しました |
| -133 | After Update トリガに失敗しました |
| -134 | Before Delete トリガに失敗しました |
| -135 | After Delete トリガに失敗しました |
| -136 | ビューの WITH CHECK OPTION 検証が INSERT に失敗しました |
| -137 | ビューの WITH CHECK OPTION 検証が UPDATE に失敗しました |
| -138 | 読み取り専用フィールドに値を INSERT および UPDATE できません |
| -139 | 更新時に並行処理が失敗しました。行バージョンが異なります |
| -140 | 無効な長さのパラメータが SUBSTRING 関数に渡されました |
| -141 | 無効な入力値が CONVERT 関数に渡されました |
| -142 | View-Columun リストとビュー・クエリの SELECT 節の要素数が一致していません |
| -143 | ORDER BY はビューのクエリに使用できません |
| -144 | INSERT 文の SET/VALUES 節にはサブクエリを使用できません |
| -145 | このテーブルでは、SQLPREVENTFULLSCAN クラス・パラメータは 1 です。 データ・マップのフル・スキャンを実行するクエリは許可されません |
| -146 | 入力された日付を妥当な日付論理値に変換できません |
| -147 | 入力された時刻を妥当な時刻論理値に変換できません |
| -148 | CREATE VIEW、ALTER VIEW、またはビューのクエリにはホスト変数参照が含まれていない可能性があります |
| -149 | SQL 関数でエラーが発生しました |
| -150 | クラス定義の楽観的同時実行ロックに失敗しました |
| -151 | この文で使用されているテーブル内にインデックスが見つかりません |
| -152 | この文で使用されているテーブル内でインデックスがあいまいです |
| -161 | SQL 接続の参照は、サブクエリ全体を構成する必要があります |
| -162 | SQL 接続が定義されていません |
| -201 | テーブルまたはビューの名前が一意ではありません |
| -220 | ゲートウェイ・クエリ・エラー |
| -221 | ゲートウェイ・クエリの GetConnection() が失敗しました |
| -222 | ゲートウェイ・クエリの AllocStatement() が失敗しました |
| -223 | ゲートウェイ・クエリの Prepare() が失敗しました |
| -225 | ゲートウェイ・クエリの BindParameters() が失敗しました |
| -226 | ゲートウェイ・クエリの Execute() が失敗しました |
| -227 | ゲートウェイ・クエリの Fetch() が失敗しました |
| -228 | ゲートウェイ・クエリの GetData() が失敗しました |
| -241 | 並列クエリのキュー・エラー |
| -242 | 並列クエリの実行時エラー |
| -300 | このテーブルの定義では DDL を使用できません |
| -301 | セーブポイント名がありません |
| -302 | "SYS" から始まるセーブポイント名は予約されます |
| -303 | UPDATE 割り当てでストリーム・フィールドから非ストリーム・フィールドへの暗黙の変換はありません |
| -304 | 既定値のない NOT NULL フィールドを、データを持つテーブルに追加しようとしました |
| -305 | テーブルの行が NULL の列値を持つ場合に必要となるフィールドを作成しようとしました |
| -306 | この名前の列が既に存在します |
| -307 | このテーブルに既に主キーが定義されています |
| -308 | このテーブルに既に ID 列が定義されています |
| -309 | %CONTAINS の左のオペランドは %Text インタフェースをサポートするプロパティではありません |
| -310 | 外部キーが参照しているテーブルが存在しません |
| -311 | このテーブルに既に同じ名前の外部キーが定義されています |
| -312 | 無効なスキーマ名です。 このスキーマ名を参照するには、区切り識別子を使用する必要があります |
| -313 | 条件式はストリーム・フィールドでサポートされていません |
| -314 | 外部キーが参照しているキー/列の集合が一意ではありません |
| -315 | 制約またはキーが見つかりません |
| -316 | 外部キーが参照しているキー/列の集合は存在しません |
| -317 | 制約を DROP できません - 1 つまたは複数の外部キー制約がこの一意の制約を参照しています |
| -319 | 参照されたテーブルは主キーが定義されていません |
| -320 | テーブルを DROP できません - 1 つまたは複数の外部キー制約がこのテーブルを参照しています |
| -321 | ビューを DROP できません - 1 つ以上のビューがこのビューを参照しています |
| -322 | 列を削除できません — 列はひとつかそれ以上のインデックスまたは制約で定義されています |
| -324 | このテーブルに既にこの名前のインデックスが定義されています |
| -325 | IDKEY インデックスでありテーブルにデータが存在するため、インデックスを切断できません |
| -333 | インデックスが定義されていません |
| -334 | インデックス名があいまいです。複数のテーブルでインデックスが検出されました。 |
| -340 | そのようなデータベース (ネームスペース) は定義されていません |
| -341 | データベース・ファイルが既に存在します |
| -342 | システム・ネームスペースを削除できません |
| -343 | 無効なデータベース名です |
| -344 | 現在使用中および接続中のデータベースをドロップできません |
| -350 | SqlComputeCode の実行中に予期しないエラーが発生しました |
| -356 | SQL 関数 (ストアド・プロシージャ関数) が値を返すように定義されていません |
| -357 | SQL 関数 (ストアド・プロシージャ関数) が関数プロシージャとして定義されていません |
| -358 | SQL 関数名 (ストアド・プロシージャ関数) が一意ではありません |
| -359 | SQL 関数名 (ストアド・プロシージャ関数) が見つかりません |
| -360 | クラスが見つかりません |
| -361 | メソッドまたはクエリ名が一意ではありません |
| -362 | メソッドまたはクエリが見つかりません |
| -363 | トリガが見つかりません |
| -364 | 同じ EVENT、TIME、ORDER を持つトリガが既に定義されています |
| -365 | トリガ名が一意ではありません |
| -366 | トリガ名とテーブル名のスキーマ名が異なります |
| -370 | ストアド・プロシージャに定義されている数より多い引数が SQL CAL で指定されています |
| -371 | :HVar = CALL ...値を返さないプロシージャを指定しています |
| -372 | 外部関数呼び出しがサポートされていません |
| -373 | 外部関数呼び出しが % ルーチンを呼び出していません |
| -374 | テーブルにデータが存在する場合、ストリーム・タイプから/ストリーム・タイプへのフィールド・データ型を変換できません |
| -375 | 確立されていないセーブ・ポイントを ROLLBACK できません |
| -376 | サポートされていない CAST ターゲットが指定されました |
| -377 | insert または update文の引数リストにフィールドが複数個あります |
| -378 | データ型が一致しません。明示的な CAST が必要です |
| -380 | スカラ関数に対する引数が無効か、または存在しません |
| -381 | スカラ関数に対する引数が多すぎます |
| エラー・コード | 説明 |
|---|---|
| -400 | 致命的なエラーが発生しました |
| -401 | 致命的な接続エラーです |
| -402 | 無効なユーザ名/パスワードです |
| -405 | 通信デバイスから読み取りできません |
| -406 | サーバに書き込みできません |
| -407 | サーバ・マスタに書き込みできません |
| -408 | サーバを起動できません |
| -409 | 無効なサーバの機能です |
| -410 | 無効なディレクトリです |
| -411 | フィールドにストリーム・オブジェクトが定義されていません |
| -412 | 一般的なストリーム・エラーです |
| -413 | 互換性のないクライアント/サーバ・プロトコルです |
| -415 | SQL ファイラ内で致命的なエラーが発生しました |
| -416 | CacheInfo エラー |
| -417 | セキュリティ・エラー |
| -422 | ODBC、JDBC、またはダイナミック SQL 経由で処理された SELECT 要求は INTO 節を含むことはできません |
| -425 | ストアド・プロシージャの要求処理のエラーです |
| -426 | ストアド・プロシージャの作成エラーです |
| -427 | 無効なストアド・プロシージャ名です |
| -428 | ストアド・プロシージャが見つかりません |
| -429 | ストアド・プロシージャの入出力パラメータ数が正しくありません |
| -430 | プロシージャ・コンテキストを初期化できません |
| -431 | ストアド・プロシージャのパラメータのタイプが一致しません |
| -432 | 1 つの値のみが予想される場合に関数から複数の行が返されました |
| -450 | ユーザのタイムアウトのため要求がタイムアウトしました |
| -451 | サーバ・メッセージを受信できません |
| -452 | メッセージ・シーケンス・エラーです |
| -453 | ユーザ初期設定コードのエラーです |
| -454 | 外部中断要求の送信エラーです |
| -459 | Kerberos 認証が失敗しました |
| -460 | 一般的なエラーです |
| -461 | 通信リンクに失敗しました |
| -462 | メモリの割り当てに失敗しました |
| -463 | 無効な列番号です |
| -464 | 関数シーケンスのエラーです |
| -465 | 無効な文字列またはバッファの長さです |
| -466 | 無効なパラメータ番号です |
| -467 | 列タイプが適用範囲外です |
| -468 | フェッチ・タイプが適用範囲外です |
| -469 | ドライバが使用できません |
| -470 | オプションの値が変更されています |
| -471 | カーソル名が重複しています |
| -472 | コレクション値プロパティが必要です |
| -478 | クエリがリコンパイルされました。結果セットが一致しません。 |
| -500 | フェッチの行カウントの制限に達しました |
| エラー・コード | 説明 |
|---|---|
| -10050 | WinSock: ネットワークがダウンしました |
| -10051 | WinSock: ネットワークに接続できません |
| -10052 | WinSock: ネットが接続を切断またはリセットしました |
| -10054 | WinSock: (タイムアウトまたは再起動により) ピアによって接続がリセットされました |
| -10055 | WinSock: 利用できるバッファ・スペースがありません |
| -10056 | WinSock: ソケットは既に接続されています |
| -10057 | WinSock: ソケットは接続されていません |
| -10058 | WinSock: ソケットの停止後は送信できません |
| -10060 | WinSock: 接続のタイムアウトです |
| -10061 | WinSock: 接続が拒否されました |
| -10064 | WinSock: ホストがダウンしています |
| -10065 | WinSock: ホストへのルートがありません |
| -10070 | WinSock: 古い NFS ファイル・ハンドルです |
| -10091 | WinSock: ネットワーク・サブシステムが利用できません |
| -10092 | WinSock: WINSOCK DLL のバージョンが適用範囲外です |
| -10093 | WinSock: WSASTARTUP がまだ正常に実行されていません |
| -11001 | WinSock: ホストが見つかりません |
| -11002 | WinSock: 特権のないホストが見つかりません |