アプリケーションの実行時に出力されるエラーメッセージごとに、その対処方法を説明します。
「JYP1079E マルチスレッドの実行環境に誤りがあります」
処理 | アプリケーション |
事象 | マルチスレッドの実行環境の誤り |
メッセージ | JYP1079E マルチスレッドの実行環境に誤りがあります. |
埋込みエラー番号 | - |
マルチスレッドの実行環境に誤りがあります。以下を確認してください。
コンパイル/リンク時にオプションを正しく指定しているか
マルチスレッドアプリケーションの場合、コンパイル/リンク時に、“sqlcc、sqlfcc、sqlcobolのオプション”、または“環境変数SQLPC、SQLPCOB”にTオプション(マルチスレッドのオプション)を指定する必要があります。
参照
詳細は、“アプリケーション開発ガイド(埋込みSQL編)”の“コンパイル・リンクの方法”を参照してください。
アプリケーション内でマルチスレッド用関数(SQLThr~)を使用してスレッド管理しているか
マルチスレッドアプリケーションの場合、アプリケーション内でSymfoware Serverのマルチスレッド用関数(SQLThr~)を使用して、スレッド管理する必要があります。
参照
詳細は、“アプリケーション開発ガイド(埋込みSQL編)”の“マルチスレッド環境におけるデータ操作”を参照してください。
注意
シングルスレッドアプリケーションの場合は上記の作業は実行しないでください。
「JYP2008E 同時に操作できるSQL文の数を超えました」
処理 | アプリケーション |
事象 | 同時に操作可能なSQL文数 |
メッセージ | JYP2008E 同時に操作できるSQL文の数を超えました. |
埋込みエラー番号 | - |
同時に操作できるSQL文の数を超えて、同時にカーソルをオープンしているか、動的SQL文の識別子を準備して(PREPARE文を実行している)います。
同時に操作できるSQL文は、クライアント用の動作環境ファイルのパラメタMAX_SQLで指定します。指定しない場合は、1024に設定されます。この値を増やしてください。
参照
値の見積もり方については、“アプリケーション開発ガイド(埋込みSQL編)”の“クライアント用の動作環境ファイルによる定義”のMAX_SQLを参照してください。
処理 | アプリケーション |
事象 | アクセス禁止状態 |
メッセージ | JYP4934E DSI “DSI名”がアクセス禁止状態です. |
埋込みエラー番号 | - |
WebAdminで、システムの状態を確認して、ガイドに従ってリカバリしてください。
参照
詳細は、“データベース簡単運用ガイド”の“運用操作”を参照してください。
処理 | アプリケーション |
事象 | テンポラリログ域不足 |
メッセージ | JYP5004E テンポラリログ域の領域が不足しました. |
埋込みエラー番号 | - |
アプリケーション(rdbuptを含む)実行時に、取得されるログ量が、Symfoware Serverが設定したテンポラリログ量を超えたため、テンポラリログ域が不足しました。これには、1つのトランザクションでテンポラリログ量を超えた場合と、複数のトランザクションが組み合わされて、テンポラリログ域を超えた場合の2通りの原因があります。
以下の方法で、テンポラリログ域不足を回避してください。
アプリケーション内(ストアドプロシジャを含む)で、COMMITの発行を増やし、大量のログが一気に出力されないように制御する方法があります。たとえば、削除する単位を100件ごとにし、1つのトランザクションで大量の更新が発生しないように制御します。
処理 | アプリケーション |
事象 | システム未起動 |
メッセージ | JYP5031E RDBIIシステムが未起動です. |
埋込みエラー番号 | - |
起動しているRDBシステムと、アプリケーションがアクセスしようとしているRDBシステムが異なっている場合、システム未起動のエラーが発生します。
アプリケーションのCONNECT文に指定しているRDBシステム名、環境変数のRDBNAMEに指定しているRDBシステム名が正しいかを確認してください。
「JYP6015E. UPDATE文の設定句に副問合せが指定されました」
処理 | アプリケーション |
事象 | 未サポート |
メッセージ | JYP6015E UPDATE文の設定句に副問合せが指定されました. |
埋込みエラー番号 | - |
「SET=<値式>」の<値式>中に問合せ指定(SELECT文)を記述するような UPDATE文は、Symfoware Serverでは未サポートです。
SELECT文の結果を一度変数に格納してから、UPDATE文を実行することで、回避可能かどうかを検討してください。
UPDATE TABLE_ABC SET A = (SELECT X FROM TABLE_XYZ WHERE Y=1111)というSQL文を実行する代わりに以下の2つのSQL文を実行します。
SELECT X FROM TABLE_XYZ WHERE Y=1111の結果を変数 MM に取り込みます。
UPDATE TABLE_ABC SET A = :MMを実行します。