先来解释下什么是错误缓冲区?

  在MySQL里面,错误缓冲区只记录近一次出现的错误,只要是有新的错误产生,旧的会被覆盖掉。所以想知道产生了什么错误,得在每个有可能发生错误的语句后面紧跟着"show warnings" 或者 "show errors"。 简单的方法是把输出的结果重定向到自己定义的日志文件里面,这样可以方便后续查看。当然如果想随时查看这些错误,我们得通过MySQL提供的API来实现。

  自从MySQL 5.6 这个革命性的版本出现后,问题得到了初步解决。虽然离我们想的还差好多。

  MySQL 5.6 提供了 get diagnostic 语句来获取错误缓冲区的内容,然后把这些内容输出到不同范围域的变量里,以便我们后续灵活操作。

  下来,我们来看一个例子。

  针对的表结构为:


  存储过程代码为:


  

 我们来执行上面的存储过程,完了后,能把错误信息保存到SESSION 变量@i_result 中。这样,方便了后期进行各种输出。