ERRトレース
ERRコンポーネントのトレースが役立つ場合もあります。たとえば、レベル4のERRトレースでは、TimesTenダイレクト・ドライバにプッシュされるすべてのエラー・メッセージが表示されます(内部的に処理されるため、すべてのエラーがユーザーに出力されるわけではありません)。デフォルトは、レベル1のERRトレースです。レベル2および3のERRトレースでは、出力は作成されません。
表2-5に、ERRトレース・レベルを示します。「+」サインの付いた各レベルには、該当するレベルで説明されているトレース情報に加え、該当レベルより上のすべてのレベルの情報も含まれます。
表2-5 ERRトレース・レベル
| レベル | 出力 |
|---|---|
|
1 (デフォルトの設定) |
致命的エラー |
|
4 |
+ 他のすべてのエラー・メッセージ。ほとんどがTimesTenで内部的に処理されます |
この例では、myDSNデータベースに対してERRトレースをレベル4で実行するためにttTraceMonを実行します。
最初に、表を作成します。
Command> CREATE TABLE test (id TT_INTEGER);
次に、レベル4でトレースを有効にします。前述の例とは異なり、この例ではトレースをファイルに出力するのではなく、トレース・バッファからその内容を直接参照します。ERRトレースをバッファに保存する前に、flushコマンドを使用してバッファを空にします。
% ttTraceMon myDSN Trace monitor; empty line to exit Trace> level err 4 Trace> flush
3つのエラーがあるSQLスクリプトを実行します。エラーは次のとおりです:
-
既存の表と同じ名前で表を作成する。
-
誤った構文を使用して表に値を挿入する。
-
CHARデータをTT_INTEGER列に挿入する。
Command> CREATE TABLE test (id TT_INTEGER);
2207: Table TEST already exists
The command failed.
Command> INSERT INTO test VALUES 'abcd');
1001: Syntax error in SQL statement before or at: "'abcd'", character position:
25
insert into test values 'abcd');
^^^^^^
The command failed.
Command> INSERT INTO test VALUES ('abcd');
2609: Incompatible types found in expression
The command failed.
トレース情報はトレース・バッファに書き込まれます。dumpコマンドを使用して、これを表示します。
Trace> dump
19:28:40.465 174227 ERR 4L 1C 24263P TT2207: Table TEST already exists
-- file "eeDDL.c", lineno 2930, procedure "sbEeCrDtblEval()"
19:28:51.399 174228 ERR 4L 1C 24263P TT1001: Syntax error in SQL
statement before or at: "'abcd'", character position: 25
insert into test values 'abcd');
^^^^^^
-- file "ptSqlY.y", lineno 6273, procedure "reserved_word_or_syntax_error"
19:29:00.725 174229 ERR 4L 1C 24263P TT2609: Incompatible types found
in expression -- file "saCanon.c", lineno 12618, procedure "sbPtAdjustType()"
3 records dumped
ERRトレースをデフォルトの設定(1)に戻し、ttTraceMonを終了します。
Trace > level err 1
Trace > {press ENTER – blank line}