执行SHOW ERRORS时,输出中有3列(Level,Code,Message).有没有办法选择一个特定的列(比方说,消息)而不是所有三个.
主要目的是在变量中获取错误消息(第3列)以进行进一步处理.
编辑:
在错误的选择查询SELECT之后查询SHOW ERRORS的结果是这样的:
+-------+------+-------------------------------------------+
| Level | Code | Message |
+-------+------+-------------------------------------------+
| Error | 1054 | Unknown column 'anything' in 'field list' |
+-------+------+-------------------------------------------+
最佳答案
我正在寻找mysql等同于T-SQL @@ ERROR的mysql并遇到了你的问题.
我已使用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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。