Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从ShowErrorMySQL获取消息和错误代码_Mysql_Stored Procedures - Fatal编程技术网

如何从ShowErrorMySQL获取消息和错误代码

如何从ShowErrorMySQL获取消息和错误代码,mysql,stored-procedures,Mysql,Stored Procedures,我使用的是MySQL 5.5,我使用显示错误来检测存储过程中的错误。但是我需要从SHOW ERRORSresults中获取要插入到日志表中的消息。我该怎么做,.?显示错误的结果如下: Level Code Message ======================================================== Error 1146 Table 'mysql.my_table' doesn't exist 若MySQL有TRY-CATCH子

我使用的是MySQL 5.5,我使用
显示错误
来检测存储过程中的错误。但是我需要从
SHOW ERRORS
results中获取要插入到日志表中的消息。我该怎么做,.?
显示错误的结果如下:

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

若MySQL有TRY-CATCH子句,那个么您可以捕获一个错误并编写有关它的信息


我建议您在应用程序级别执行此操作-捕获错误并将信息写入日志文件/表。

我认为在5.5中没有办法做到这一点,但是如果您已更新到5.6+,则可以执行以下操作:

我曾经访问过错误信息,然后将这些信息作为插入错误日志的输入

创建结构,例如:

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\u错误的输出:

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;