Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理MySQL存储过程生成的所有错误 背景_Mysql_Stored Procedures_Error Handling - Fatal编程技术网

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

如何处理MySQL存储过程生成的所有错误 背景,mysql,stored-procedures,error-handling,Mysql,Stored Procedures,Error Handling,我正在编写一个web应用程序,我有一个存储过程,可以将一些数据插入表中。作为一名程序员,我怀疑IO,所以直觉告诉我,如果写操作失败,我需要做一些异常处理 存储过程中错误处理的预期效果是设置DAL使用的标志(在PHP中),该标志将提醒用户某些内容已损坏,并将详细信息发送给管理员 问题 如果我希望生成任何错误来触发此处理,那么在此级别处理错误的最佳策略是什么 MySQL错误代码和SQLSTATE值对于识别特定的错误很有用,而不是我想要的。SQLEXCEPTION可能是一种更广泛的错误处理机制,可能

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

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

问题

  • 如果我希望生成任何错误来触发此处理,那么在此级别处理错误的最佳策略是什么
  • MySQL错误代码和SQLSTATE值对于识别特定的错误很有用,而不是我想要的。SQLEXCEPTION可能是一种更广泛的错误处理机制,可能适合我的需要,但我想知道这是否有点类似于在C#中捕获异常,因为它可能捕获我确实不应该捕获的东西
  • 我是不是从完全错误的角度看这个问题?我目前认为,在数据库中保留尽可能多的数据逻辑是一个好主意,因此在数据库中处理数据库错误是很自然的,但我愿意接受建议。
  • 我是否从完全错误的角度看待这个问题

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

    通常的练习是在存储过程中尽可能少地执行操作。您的PHP程序将出现错误和异常,这正是您希望发生的。既然PHP会出现异常,那么您担心什么呢?让它们从存储过程中弹出即可

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

    如果您想以某种方式将所有存储过程“包装”到某种错误日志中,请在PHP中执行此操作。不要过度编写存储过程。不要担心I/O错误。你有一个数据库来处理这个问题