yajra / laravel-datatables

jQuery DataTables API for Laravel

Home Page:https://yajrabox.com/docs/laravel-datatables

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Getting SQLSTATE[HY000] [2002] Connection refused on ajax execution.

franciscoarnaldog opened this issue · comments

Summary of problem or feature request

Getting SQLSTATE[HY000] [2002] Connection refused on ajax execution.

Code snippet of problem

[2023-08-16 17:31:26] local.ERROR: PDOException: SQLSTATE[HY000] [2002] Connection refused in /home/franzag/code/_cf/HandyWay/guiasdev/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:40
Stack trace:
#0 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php(40): PDO->__construct()
#1 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(67): Doctrine\DBAL\Driver\PDOConnection->__construct()
#2 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(100): Illuminate\Database\Connectors\Connector->createPdoConnection()
#3 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(50): Illuminate\Database\Connectors\Connector->tryAgainIfCausedByLostConnection()
#4 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php(24): Illuminate\Database\Connectors\Connector->createConnection()
#5 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php(184): Illuminate\Database\Connectors\MySqlConnector->connect()
#6 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors\{closure}()
#7 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Connection.php(926): call_user_func()
#8 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Connection.php(961): Illuminate\Database\Connection->getPdo()
#9 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Connection.php(405): Illuminate\Database\Connection->getReadPdo()
#10 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Connection.php(331): Illuminate\Database\Connection->getPdoForSelect()
#11 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Connection.php(664): Illuminate\Database\Connection->Illuminate\Database\{closure}()
#12 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Connection.php(745): Illuminate\Database\Connection->runQueryCallback()
#13 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Connection.php(725): Illuminate\Database\Connection->tryAgainIfCausedByLostConnection()
#14 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Connection.php(634): Illuminate\Database\Connection->handleQueryException()
#15 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Connection.php(339): Illuminate\Database\Connection->run()
#16 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2270): Illuminate\Database\Connection->select()
#17 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2258): Illuminate\Database\Query\Builder->runSelect()
#18 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2753): Illuminate\Database\Query\Builder->Illuminate\Database\Query\{closure}()
#19 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2259): Illuminate\Database\Query\Builder->onceWithColumns()
#20 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(548): Illuminate\Database\Query\Builder->get()
#21 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(532): Illuminate\Database\Eloquent\Builder->getModels()
#22 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/yajra/laravel-datatables-oracle/src/QueryDataTable.php(272): Illuminate\Database\Eloquent\Builder->get()
#23 /home/franzag/code/_cf/HandyWay/guiasdev/vendor/yajra/laravel-datatables-oracle/src/QueryDataTable.php(101): Yajra\DataTables\QueryDataTable->results()
#24 /home/franzag/code/_cf/HandyWay/guiasdev/app/Http/Controllers/ConsultaGuiasController.php(382): Yajra\DataTables\QueryDataTable->make()
$wheres = [];
$wheres[] = ' e.id = 1 ';
$wheres = count($wheres) > 0 ? implode(' AND ', $wheres) : ' g.id > 0 ';
$guias = Guia::select($this->SELECT)->from('guias as g')
                    ->join('consignatarios as c', 'g.consignatario_id', '=', 'c.id')
                    ->join('aeropuertos as ao', 'g.aero_origen_id', '=', 'ao.id')
                    ->join('aeropuertos as ad', 'g.aero_destino_id', '=', 'ad.id')
                    ->join('users as u', 'g.user_id', '=', 'u.id')
                    ->leftJoin('guias_echamp as ge', 'g.id', '=', 'ge.guia_id')
                    ->leftJoin('manifiesto_guias as mg', 'g.id', '=', 'mg.guia_id')
                    ->leftJoin('manifiestos as m', 'm.id', '=', 'mg.manifiesto_id')
                    ->leftJoin('vuelos as v', 'm.vuelo_id', '=', 'v.id')
                    ->leftJoin('empresas as e', 'v.empresa_id', '=', 'e.id')
                    ->whereRaw($wheres);

        return DataTables::eloquent($guias)
            ->editColumn('oper', function (Guia $g) use ($name, $fFechaDesde, $fFechaHasta, $fConsignatarioSel, $fConsignatario) {
                $ret = "";
                $show_url = url("/consulta_guias/show/{$g->id}?fFechaDesde={$fFechaDesde}&fFechaHasta={$fFechaHasta}&fConsignatarioSel={$fConsignatarioSel}&fConsignatario={$fConsignatario}");
                $show_icon = "<i class='fas fa-search'></i>";
                $print_url = url("/consulta_guias/imprimir/{$g->id}");
                $print_icon = "<i class='fas fa-print'></i>";

                $ret .= "<a href='{$show_url}' title='Ver detalles de Guia #".$g->id."' style='text-decoration:none;'>
                            {$show_icon}
                        </a>&nbsp;";
                $ret .= "<a href='{$print_url}' target=\"_blank\" title='Imprimir Guia #".$g->id."' style='text-decoration:none;'>
                            {$print_icon}
                            </a>";

                return $ret;
            })
            ->filterColumn('g_numero', function($query, $keyword) {
                $sql = "CONCAT(`ad`.`cod` , '-', LPAD(`g`.`id`,6,'0')) LIKE ?";
                $query->whereRaw($sql, ["%{$keyword}%"]);
            })
            ->filterColumn('guia_echamp', function ($query, $keyword) {
                $sql = "CONCAT(ge.prefijo,ge.numero,ge.ultimo_digito)  LIKE ?";
            $query->whereRaw($sql, ["%{$keyword}%"]);
            })
            ->filterColumn('c_tipo_doc', function($query, $keyword) {
                $sql = "CASE tipo_doc
                            WHEN 1 THEN '".Consignatario::TIPOS_DOC[1]."'
                            WHEN 2 THEN '".Consignatario::TIPOS_DOC[2]."'
                            WHEN 3 THEN '".Consignatario::TIPOS_DOC[3]."'
                            WHEN 4 THEN '".Consignatario::TIPOS_DOC[4]."'
                        END LIKE !";
                $query->whereRaw($sql, ["%{$keyword}%"]);
            })
            ->filterColumn('c_condicion_iva', function($query, $keyword) {
                $sql = "CASE condicion_iva
                            WHEN 1 THEN '".Consignatario::CONDICIONES_IVA[1]."'
                            WHEN 2 THEN '".Consignatario::CONDICIONES_IVA[2]."'
                            WHEN 3 THEN '".Consignatario::CONDICIONES_IVA[3]."'
                            WHEN 4 THEN '".Consignatario::CONDICIONES_IVA[4]."'
                            WHEN 5 THEN '".Consignatario::CONDICIONES_IVA[5]."'
                            WHEN 6 THEN '".Consignatario::CONDICIONES_IVA[6]."'
                        END LIKE !";
                $query->whereRaw($sql, ["%{$keyword}%"]);
            })
            ->filterColumn('estado_c', function($query, $keyword) {
                $sql = "CASE estado
                            WHEN 0 THEN '".Guia::ESTADOS[0][0]."'
                            WHEN 1 THEN '".Guia::ESTADOS[1][0]."'
                            WHEN 2 THEN '".Guia::ESTADOS[2][0]."'
                            WHEN 3 THEN '".Guia::ESTADOS[3][0]."'
                            WHEN 4 THEN '".Guia::ESTADOS[4][0]."'
                            WHEN 5 THEN '".Guia::ESTADOS[5][0]."'
                            WHEN 6 THEN '".Guia::ESTADOS[6][0]."'
                            WHEN 7 THEN '".Guia::ESTADOS[7][0]."'
                            ELSE '!'
                        END LIKE ?";
                $query->whereRaw($sql, ["%{$keyword}%"]);
            })
            ->filterColumn('prioridad_c', function($query, $keyword) {
                $sql = "CASE prioridad
                            WHEN 1 THEN '".Guia::PRIORIDADES[1][0]."'
                            WHEN 2 THEN '".Guia::PRIORIDADES[2][0]."'
                            WHEN 3 THEN '".Guia::PRIORIDADES[3][0]."'
                            ELSE '!'
                        END LIKE ?";
                $query->whereRaw($sql, ["%{$keyword}%"]);
            })
            ->filterColumn('g_cpbte', function($query, $keyword) {
                $sql = "(SELECT GROUP_CONCAT( CONCAT_WS('' , CONCAT( LPAD(`cs`.`pto_venta`,5,'0') , '-', LPAD(`cs`.`numero`,8,'0'))) SEPARATOR ' - ')
                            FROM `cpbtes` as `cs`
                            INNER JOIN `guia_liquidacion` `gl` ON `gl`.`guia_id` = `g`.`id`
                            INNER JOIN `liquidaciones` `l` ON `l`.`id` = `gl`.`liquidacion_id`
                            WHERE `cs`.`guia_id` = `g`.`id` OR `cs`.`liquidacion_id` = `l`.`id`)
                        LIKE ?";
                $query->whereRaw($sql, ["%{$keyword}%"]);
            })
            ->editColumn('importe', function (Guia $g) {
                return $g->importe != 0 ? $g->importe:'';
            })
            ->editColumn('created_at', function (Guia $g) {
				return $g->created_at?$g->created_at->format('d/m/Y'):null;
                //->format('Y-m-d H:i:s'):null;
			})
            ->editColumn('updated_at', function (Guia $g) {
				return $g->updated_at?$g->updated_at->format('d/m/Y'):null;
			})
			->rawColumns(['oper', 'estado_c'])
            ->blacklist(['oper'])
			->make(true);

System details

I suspect its something related to the sessions? database sessions.
The SQL its alright, I logged the SQL and works fine.

SESSION_DRIVER=database
SESSION_LIFETIME=30
  • Operating System: Linux
  • PHP Version: 7.4
  • Laravel Version: 7
  • Laravel-Datatables Version: 9

Just ignore this. Was killing the hanging MySQL process and that error come out.
The problem was a subquery in te select statement, I hope making the joins and just putting the transformation in the select will work.

☕ Thanks

This issue is stale because it has been open for 30 days with no activity. Remove stale label or comment or this will be closed in 7 days.

This issue was closed because it has been inactive for 7 days since being marked as stale.