mysql - MariaDB 相当于 Oracle WHENEVER SQLERROR

标签 mysql error-handling mariadb sqlplus

在Oracle的sqlplus中,编写脚本时我们可以使用WHENEVER SQLERROR来检测/处理错误。

例如

sqlplus /nolog -S <<EOF

WHENEVER SQLERROR EXIT FAILURE ROLLBACK

CONNECT /

EXEC ThisProcThrowsAnError();

QUIT

EOF

if [ ${?} -eq 0 ]
then
   echo "Worked OK"
else
   echo "Oh dear"
fi

MariaDB(mysql 客户端)中是否有等效项?

请注意,我不仅对存储过程感兴趣,而且对在 MariaDB 上执行脚本时可能出错的任何错误感兴趣。

最佳答案

在 MySQL/MariaDB 存储过程中,您可以编写此类内容,例如:

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
  ROLLBACK;
  @error := 'got exception';
END;

您还可以编写DECLARE EXIT HANDLER FOR条件语句

在存储过程之外,您无法捕获异常(客户端程序中除外)。

这是文档。 https://dev.mysql.com/doc/refman/8.0/en/declare-handler.html

如果您正在文本文件中查找 MySQL 错误,您可以尝试此正则表达式

/^ERROR\s+\d{4}\s*([A-Z0-9]{5}):\s*.*$/

它会查找诸如ERROR 2003 (HY000): Can't connect to MySQL server on '172.16.1.169'之类的内容。

关于mysql - MariaDB 相当于 Oracle WHENEVER SQLERROR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52931153/

相关文章:

mysql - Rails 迁移 : Adding comment to column without changing type

javascript - 在这种情况下,如何将数据从 html 传输到 php

MySQL - 选择 3 个最高值并按字母顺序排序

c++ - 我的范德蒙矩阵程序哪里出错了?

php - 使用 PHP7 的 mariaDB 中的 MySQLi 和 PDO

docker - MariaDB Docker启动失败

mysql - SQL - 其中一个表而不是另一个表(多个字段)

mysql - sql语法引起的xcart错误

php - PHP : Ignoring errors and notices in a specific class

mysql - MariaDB 显示列权限