1

私はMySQL 5.5を使用SHOW ERRORSしており、ストアドプロシージャからエラーを検出するために使用しています。しかし、結果からメッセージを取得しSHOW ERRORSて、ログ テーブルに挿入する必要があります。どうすればできますか?結果は次のようになります
SHOW ERRORS

Level     Code     Message
========================================================
Error     1146     Table 'mysql.my_table' doesn't exist
4

2 に答える 2

1

MySQLにTRY-CATCH句がある場合、エラーをキャッチしてそれに関する情報を書き込むことができます。

アプリケーションレベルで実行することをお勧めします-エラーをキャッチし、ログファイル/テーブルに情報を書き込みます。

于 2012-09-06T13:47:36.040 に答える
1

5.5 でこれを行う方法はないと思いますが、5.6+ に更新した場合は、次のことができます。

GET DIAGNOSTICSを使用してエラー情報にアクセスし、これらをエラー ログへの挿入の入力として使用しました。

たとえば、構造を作成します。

CREATE TABLE table_that_exists 
(
column_that_exists INT(11) NOT NULL
, PRIMARY KEY (column_that_exists)
);
    
CREATE TABLE tbl_error_log 
(
id INT(11) NOT NULL AUTO_INCREMENT
, err_no INT(4)
, err_msg VARCHAR(50)
, source_proc VARCHAR(50)
, PRIMARY KEY (id)
);

クエリを実行してエラーを生成し、SHOW_ERRORS の出力を表示します。

SELECT anything FROM table_that_exists;

SHOW ERRORS;

他の手順/エラー管理で使用するデータにアクセスする方法の例:

GET DIAGNOSTICS CONDITION 1
@P1 = MYSQL_ERRNO, @P2 = MESSAGE_TEXT;

SELECT @P1, @P2;

INSERT INTO tbl_error_log (err_no, err_msg, source_proc)
VALUES (@P1, @P2, 'sp_faulty_procedure');

SELECT * FROM tbl_error_log;
于 2015-12-08T14:54:26.097 に答える