代码之家  ›  专栏  ›  技术社区  ›  Crippledsmurf

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

  •  0
  • Crippledsmurf  · 技术社区  · 14 年前

    背景

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

    存储过程中错误处理的预期效果是设置一个DAL使用的标志(在PHP中),该标志将警告用户有问题,并将详细信息发送给管理员。

    问题

  • 如果我希望生成的任何错误触发此处理,那么在这个级别上处理错误的最佳策略是什么?
  • mysql错误代码和sqlstate值有助于识别特定的错误,而不是我想要的。sqlException接缝是一种更广泛的错误处理机制,可以满足我的需要,但是我想知道这是否有点类似于在C中捕获异常,关于捕获我真正不应该捕获的东西的可能性
  • 我从完全错误的角度看待这个问题吗?我现在的观点是,在数据库中保留尽可能多的数据逻辑是一个好主意,所以处理数据库接缝中的数据库错误是很自然的,但是我愿意接受建议。
  • 1 回复  |  直到 14 年前
        1
  •  1
  •   S.Lott    14 年前

    我从完全错误的角度看待这个问题吗?

    对。如果您不能信任您的数据库来处理I/O错误,那么您就缺少了使用数据库的意义。

    通常的演练是尽可能少地在存储过程中进行操作。您的PHP程序将得到错误和异常,这正是您希望发生的事情。既然PHP会得到异常,您担心什么?只需让它们从存储过程中弹出即可。

    你的PHP必须“提醒用户有什么东西坏了”。

    如果您想以某种方式将所有存储过程“包装”在某种错误日志中,那么可以在PHP中这样做。不要乱写存储过程。不要担心I/O错误。你有一个数据库来处理这个问题。