larval 如何捕获mysql错误
程序员文章站
2022-03-22 19:52:52
...
larval捕获mysql错误的方法:1、使用errorInfo变量返回SQLSTATE错误和消息;2、使用异常处理程序“app/Exceptions/Handler.php并侦听QueryExceptions”将所有SQL错误记录到数据。
推荐:《mysql视频教程》
Laravel使用PDO,因此您可以使用errorInfo变量返回SQLSTATE错误和消息。基本上,您需要使用$e->errorInfo;
如果要将所有SQL错误记录到数据库中,可以使用异常处理程序(app/Exceptions/Handler.php并侦听QueryExceptions。像这样的:
public function render($request, Exception $e) { switch ($e) { case ($e instanceof \Illuminate\Database\QueryException): LogTracker::saveSqlError($e); break; default: LogTracker::saveError($e, $e->getCode()); } return parent::render($request, $e); }
然后你可以用这样的东西:
public function saveSqlError($exception) { $sql = $exception->getSql(); $bindings = $exception->getBindings() // Process the query's SQL and parameters and create the exact query foreach ($bindings as $i => $binding) { if ($binding instanceof \DateTime) { $bindings[$i] = $binding->format('\'Y-m-d H:i:s\''); } else { if (is_string($binding)) { $bindings[$i] = "'$binding'"; } } } $query = str_replace(array('%', '?'), array('%%', '%s'), $sql); $query = vsprintf($query, $bindings); // Here's the part you need $errorInfo = $exception->errorInfo; $data = [ 'sql' => $query, 'message' => isset($errorInfo[2]) ? $errorInfo[2] : '', 'sql_state' => $errorInfo[0], 'error_code' => $errorInfo[1] ]; // Now store the error into database, if you want.. // .... }
以上就是larval 如何捕获mysql错误的详细内容,更多请关注其它相关文章!
推荐阅读
-
如何解决mysql 错误2005问题
-
提示:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'的错误如何解决?
-
spring mvc捕获异常时,如何判断应该返回json还是跳转错误页面
-
mysql 登录时报 ”1045 (28000):..." 错误如何解决?
-
MySQL命令提示符出现输入错误时如何修改前面的命令
-
如何避免mysql启动时错误及sock文件作用分析
-
如何捕获PHP 连接mysql错误
-
mysql_fetch_array如何屏蔽无数据错误提示
-
如何捕获和记录SQL Server中发生的死锁_MySQL
-
如何解决Navicat for MySQL 1130错误