MySQL 异常处理程序正在处理访问异常

2023-11-22

我试图发生错误时回滚,但仍然让客户端接收到错误。这实际上可能是不可能的,除非有一种方法可以访问异常处理程序中的错误。

可以从异常中“抛出”,即可以发出信号:

CREATE PROCEDURE p ()
BEGIN
  DECLARE EXIT HANDLER FOR SQLEXCEPTION
  BEGIN
    SIGNAL SQLSTATE VALUE '99999'
      SET MESSAGE_TEXT = 'An error occurred';
  END;
  DROP TABLE no_such_table;
END;

但是 MySQL 文档中的示例代码看起来horrible,因为它字面上吞掉所有错误并将它们合而为一。

SHOW ERRORS似乎相关,但我没有看到任何以编程方式使用它的方法,例如SELECT Code FROM (SHOW ERRORS);不可能。

这可能吗?有没有我完全错过的更好的做法?


好像RESIGNAL就是您正在寻找的。

RESIGNAL使得处理错误和返回错误信息成为可能。否则,通过在处理程序内执行 SQL 语句,导致处理程序激活的信息将被破坏。RESIGNAL如果给定的处理程序可以处理部分情况,然后将条件“向上”传递给另一个处理程序,也可以缩短某些过程。

DELIMITER $$

DROP PROCEDURE IF EXISTS `test`.`resig` $$
CREATE PROCEDURE `test`.`resig` ()
BEGIN

DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
  SELECT 'I executed something before throwing the error' as `this_works`;
  RESIGNAL;
END;

SELECT foo FROM bar WHERE baz = 0;

END $$

DELIMITER ;


mysql> call resig();
+------------------------------------------------+
| this_works                                     |
+------------------------------------------------+
| I executed something before throwing the error |
+------------------------------------------------+
1 row in set (0.00 sec)

ERROR 1054 (42S22): Unknown column 'foo' in 'field list'

mysql>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 异常处理程序正在处理访问异常 的相关文章

  • MySQL Match() Against() 区分大小写

    目前 我的数据库是字符集Latin1意义 SELECT FROM TABLE MATCH column1 AGAINST words here IN BOOLEAN MODE 只会返回不敏感的搜索 但问题是我的数据库将通过不敏感和区分大小写
  • 如何在通过 Laravel Eloquent 方法连接的元素上使用 orderby

    问题是查询无法找到应该与 Laravel Eloquent 中的方法WITH 连接的特定方法 特定方法 特定模型 特定模型 特定方法等 有什么想法如何解决吗 我的代码 SpecificModel
  • Java 中的异常捕获

    Java 中有一些预定义的异常 如果抛出这些异常 就会报告发生了严重的事情 你最好改进你的代码 而不是在 catch 块中捕获它们 如果我理解正确的话 但我仍然发现许多程序中有以下内容 catch IOException e catch F
  • 如何将 mvc-mini-profiler 与 Entity Framework 4.1 一起使用

    我尝试将 mvc mini profiler 与 MVC3 一起使用 但不断收到以下错误 无法确定 MvcMiniProfiler Data ProfiledDbConnection 类型连接的提供程序名称 下面是我用来尝试实例化上下文的代
  • Hibernate 可以使用 MySQL 的“ON DUPLICATE KEY UPDATE”语法吗?

    MySQL 支持 INSERT ON DUPLICATE KEY UPDATE 语法允许您 盲目 插入数据库 并回退到更新现有记录 如果存在 当您想要快速事务隔离并且想要更新的值取决于数据库中已有的值时 这非常有用 作为一个人为的示例 假设
  • MySQL 导入 125000 行 CSV 的最快方法?

    这是我第一次使用 MySQL 除了对现有数据库进行一些基本查询之外 所以我不擅长解决这个问题 我有一个包含 125 000 条记录的 CSV 我想将其加载到 MySQL 中 我安装了版本 8 和工作台 我使用导入向导加载 CSV 它开始导入
  • 检查内部异常的最佳方法?

    我知道有时 innerException 为 null 因此以下操作可能会失败 repEvent InnerException ex InnerException Message 有没有一种快速的三元方法来检查innerException是
  • 如何在不超时的情况下解析大型 CSV 文件?

    我正在尝试解析 50 MB 的 csv 文件 文件本身很好 但我正在尝试解决所涉及的大量超时问题 每个设置上传明智 我可以轻松上传并重新打开文件 但浏览器超时后 我收到 500 内部错误 我的猜测是我可以将文件保存到服务器上 打开它并保留我
  • Mysql - Mysql2::错误:字符串值不正确:

    所以我建造了一个刮刀并拉动一些物体 问题是有些是外语 它使 mysql 数据库有点崩溃 这是我得到的错误 知道我能用这个做什么吗 谢谢 Mysql2 错误 列的字符串值不正确 xC5 x8Dga 第 1 行的 描述 插入sammiches
  • Swift 中的运行时错误处理

    我完全知道 Swift 没有 try catch 机制来捕获异常 好吧 Swift 2 0 现在支持它们 我还了解到 许多 API 方法都会返回一个 NSError 如果出现问题 该错误对象将被填充为错误对象 所以请不要向我指出这个问题 S
  • 使用mysql在一个查询中选择多个表中的子项总数

    我整个下午都在尝试处理一个查询 或两个或三个 以获得三个表的所有子表的计数 看看我的设计 用户表 id user name 1 foo 2 bar 赢表 id won user 1 1 2 1 3 2 绘制表格 id draw user 1
  • 如何用 UNION 运算符替换 OR 运算符?

    这是我的查询 SELECT h id h subject h body matnF h amount h keywords tags h closed h author id author h AcceptedAnswer h type h
  • 将 UPDATE 转换为 INSERT INTO ON DUPLICATE KEY UPDATE 语句

    我有这个 UPDATE MySQL 语句 效果很好 UPDATE table1 Inner Join table2 ON table2 id table1 gw id SET table1 field1 1 table1 field2 2
  • MySQL+子串怎么做? + 替换?

    我不太擅长 SQL 希望能够变得更好 我在尝试执行某些表操作时遇到一些麻烦 我希望能够从下面的 ProgUID 列中选择子字符串 就像是 SUBSTRING table ProgUID 3 12 这将为我提供 ProgUID P CAMVE
  • 使用 F5 时,finally 似乎没有在 C# 控制台应用程序中执行

    int i 0 try int j 10 i catch IOException e finally Console WriteLine In finally Console ReadLine 在VS2008中按F5时 finally块似乎
  • MySQL 存储过程将值分配给 select 语句中的多个变量

    这是我的存储过程 我在为声明的变量赋值时遇到问题 当我执行它时 插入和更新命令工作正常 但声明变量的值保持为 0 但我在数据库中有一些价值 我怎样才能正确地做到这一点 BEGIN DECLARE PaidFee INT DEFAULT 0
  • Mysql innoDB 不断崩溃[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的数据库 mysql 服务器不断崩溃 重新启动 我不知道该怎么办 我不断在 dbname org err 文件中收到以下内容 13120
  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M
  • mysql-如何向列申请补助?

    用户名 撤销对数据库的选择 Person I set GRANT SELECT id ON database Person TO username localhost 不是工作 gt SELECT secret FROM Person Go
  • 如何使用 MySQL 的 LOAD DATA LOCAL INFILE 在导入 CSV 时将字符串日期更改为 MySQL 日期格式

    我正在使用 MySQL 的 LOAD DATA LOCAL INFILE SQL 语句将数据从 CSV 文件加载到现有数据库表中 下面是一个 SQL 语句示例 LOAD DATA LOCAL INFILE file csv INTO TAB

随机推荐

  • 在“by”参数中使用字符向量

    内data tableR 中的包 有没有一种方法可以使用在 R 中分配的字符向量by计算的论证 以下是使用 mtcars 所需输出的示例 mtcars lt data table mtcars ColSelect lt cyl One Co
  • 在 java 中读取我的文件时,BufferedReader 会跳过每隔一行

    因此 我正在读取一个包含我之前在代码中写入的约会的文件 我想筛选文本文件并找到某个日期的约会并将它们添加到 ArrayList 中 但是当 BufferedReader 遍历它时 它会跳过其他行 这是我的代码 public ArrayLis
  • Laravel:如何根据路由响应自定义 404 错误

    我在用着Laravel4框架 我遇到了这个问题 我想根据请求的 url 显示自定义 404 错误 例如 Route get site something function something return View make site er
  • 新表达式的模板参数推导失败

    我正在开发一个可变参数类模板 但如果不指定模板参数 我就无法将它与新表达式一起使用 我不想 我将问题简化为以下代码示例 template
  • dp是基于屏幕的物理尺寸吗? (dp = 1/160 英寸)

    这个定义正确吗 dp 与密度无关的像素 1 160 英寸 基于屏幕的物理尺寸 我发现了相互矛盾的信息 官方文档假设按比例缩放在等式 px dp dpi 160 中 还here 3 02 罗曼 努里克说 按比例缩放 但在官方文档中 px 像素
  • 在 Perl 中遍历多维哈希

    如果 Perl 中有一个具有多个维度的散列 或对散列的引用 并且您想要迭代所有值 那么最好的方法是什么 换句话说 如果我们有 f gt x y 我想要类似的东西 foreach x y deep keys f 代替 foreach x ke
  • 连接到多个 mongo db 主机并在 Spring Boot 中使用不同的数据库进行身份验证

    我有一个与 mongo db 集成的 java 应用程序 我碰巧有 3 个 mongo 数据库主机 均具有相同的端口 并且必须使用除我的应用程序使用的数据库之外的单独数据库对它们进行身份验证 例如 admin 是身份验证数据库名称 cont
  • Visual Studio 2010 Professional 中的 C# 模式

    在配置刚刚安装的 Visual Studio 2010 Professional 时 我错误地选择了 Visual Basic 模式 我想更正我的选择并将其更改为 C 我怎样才能做到这一点 工具 gt 导入和导出设置 gt 重置所有设置 g
  • 词典内部是如何维护的?

    当我说 Dictionary
  • 如何将数据标签添加到seaborn countplot / Factorplot [重复]

    这个问题在这里已经有答案了 我使用 python3 seaborn countplot 我的问题 如何为每个柱添加计数值 显示顶部的标签 每个酒吧 如何让这些条按降序排列 我写了这个 fig plt figure figsize 10 6
  • 在 Perl 中迭代哈希中的哈希数组

    我的哈希中有一个哈希数组 如下所示 VAR1 file gt pathname gt out log size gt 51 name gt out log time gt 1345799296 pathname gt test pl
  • Sublime text3 和 virtualenvs

    我有不同的virtualenv的 用virtualenwrapper 并且我希望能够指定哪个virtualenv与每个项目一起使用 由于我正在使用SublimeREPL用于自定义构建的插件 如何指定使用哪个 python 安装来构建我的项目
  • WebView - 如果不请求两次就无法下载文件?

    如果我听DownloadListener 我得到了我需要请求的URL在浏览器已经请求之后 浏览器已经打开了到该 URL 的连接 这就是它知道这是下载的原因 为什么它不能向我传递该连接 我也尝试分配一个自定义WebViewClient to
  • 在字符串中的特定位置插入字符

    我想在字符串中的特定位置插入额外的字符 或新字符串 例如我想插入d在第四个位置abcefg to get abcdefg 现在我正在使用 old lt abcefg n lt 4 paste substr old 1 n 1 d subst
  • 如何使用 XML 通过 Spring Security Oauth2 启用 /oauth/check_token

    我已经使用 spring security 3 2 和 javaconfig 成功启用了 oauth check token 端点 但目前我仅限于 spring security 3 1 4 然后我坚持使用 XML 配置 oauth tok
  • 如何选取质数来计算哈希码?

    这个问题是根据乔恩 斯基特 Jon Skeet 对这个问题给出的答案而来的 重写 System Object GetHashCode 的最佳算法是什么 为了计算哈希码 使用以下算法 public override int GetHashCo
  • Python 同步 stdout 和 stderr 输出

    使用以下代码 import sys print INFO flush True file sys stdout print ERROR flush True file sys stderr 有时输出是 ERROR INFO 有时 INFO
  • 访问 Roslyn REPL 中的 .config 文件

    使用罗斯林 2012 年 6 月 CTP 有没有办法为 Roslyn C Interactive REPL 提供正在探索的代码的 config 文件 一个简单的示例场景是依赖于通常从 app config web config 获取的连接字
  • glUniformBlockBinding 的用途是什么?

    假设我有一个索引处带有 UniformBlock 的着色器程序0 绑定 UniformBuffer 以下显然足以将 UniformBuffer 绑定到块 glUseProgram program glBindBuffer GL UNIFOR
  • MySQL 异常处理程序正在处理访问异常

    我试图发生错误时回滚 但仍然让客户端接收到错误 这实际上可能是不可能的 除非有一种方法可以访问异常处理程序中的错误 可以从异常中 抛出 即可以发出信号 CREATE PROCEDURE p BEGIN DECLARE EXIT HANDLE