larval 如何捕获mysql错误

2023年 4月 18日 48.8k 0

larval捕获mysql错误的方法:1、使用errorInfo变量返回SQLSTATE错误和消息;2、使用异常处理程序“app/Exceptions/Handler.php并侦听QueryExceptions”将所有SQL错误记录到数据。 推荐:《mysql视频教程

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 IlluminateDatabaseQueryException):
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错误的详细内容,更多请关注每日运维其它相关文章!

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论