如何处理MySQL存储过程生成的所有错误

时间:2010-02-12 16:45:43

标签: mysql stored-procedures error-handling

背景

我正在编写一个Web应用程序,我有一个存储过程,它将一些数据插入到表中。作为程序员,我怀疑IO,所以我的直觉告诉我,如果写入失败,我需要做一些异常处理。

存储过程中错误处理的预期效果是设置DAL(在PHP中)使用的标志,该标志会提醒用户某些内容已损坏并将详细信息发送给管理员。 / p>

问题

  • 在此级别处理错误的最佳策略是什么,因为我希望生成任何错误来触发此处理?
  • MySQL错误代码和SQLSTATE值有助于识别特定错误,似乎不是我正在寻找的。 SQLEXCEPTION接缝是一个更广泛的错误处理机制,可能适合我的需要,但我想知道这是否有点类似于捕获C#中的Exception有关捕获我不应该捕获的东西的可能性
  • 我是从COMPLETELY看错了吗?我目前认为在数据库中保留尽可能多的数据逻辑是一个好主意,因此处理数据库接缝中的数据库错误很自然,但我愿意接受建议。
  • 1 个答案:

    答案 0 :(得分:1)

    我是从完全错误的角度看这个吗?

    是。如果您不能信任您的数据库来处理I / O错误,那么您就错过了使用数据库的重点。

    通常的练习是在存储过程中尽可能少地进行。您的PHP程序将获得错误和异常,这就是您想要发生的事情。由于PHP将获得例外,您还在担心什么?只需让它们弹出您的存储过程。

    您的PHP必须“提醒用户某些内容已损坏”。

    如果您想以某种方式将所有存储过程“包装”在某种错误记录中,请在PHP中执行此操作。不要乱写你的存储过程。不要担心I / O错误。你有一个数据库来处理它。