MySQL事件异常记录

MySQL事件异常记录

最近在调整MySQL存储过程以及通过事件调用的过程中遇到几个坑,记录如下。

MySQL版本:5.6

开发工具:SQLyog v12

  1. 存储过程 P 中有一条 UPDATE 临时表 TEMP_T 的语句,调整过程中把表名写错了,相当于 UPDATE TEMP_T 之前,并没有创建 TEMP_T。但是,存储过程 P 在最终提交的时候并没有报错,而且执行存储过程 P 也没有报错!然而,后来观察到通过事件 E 调用此存储过程失败了,失败原因就是表不存在!

  2. 存储过程 P 中创建了一张临时表 TEMP_T,其中一个字段 C 为 TEXT 类型,而且定义了 DEFAULT ‘’(实际上 TEXT 类型不支持自定义默认值)。同样的,存储过程 P 在提交和执行过程中都没有报错,而通过事件 E 调用时才出现了报错!

    1101 - 42000 - BLOB/TEXT column 'adp_msg' can't have a default value
    
  3. 更有意思的是,我还创建了一张实体表 T,其中一个字段 C 为 TEXT 类型,而且定义了 DEFAULT ‘’。直接执行建表语句没有任何报错,但是通过 SQLyog 查看表信息时,发现字段 C 的 DEFAULT ‘’ 定义已经被取消了!

结论:
因为所有的执行操作都是在 SQLyog 上进行的,所以我怀疑这个软件是不是有忽略部分 SQL 错误的功能?接着,我改用 Navicat 测试了一下 TEXT 类型定义 DEFAULT ‘’ 问题,仍然没有报错,是不是说明这两个客户端软件都会忽略错误,还是 MySQL 本身的问题?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值