56 lines
2.2 KiB
PHP
56 lines
2.2 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Illuminate\Database;
|
||
|
|
||
|
use Illuminate\Support\Str;
|
||
|
use Throwable;
|
||
|
|
||
|
trait DetectsLostConnections
|
||
|
{
|
||
|
/**
|
||
|
* Determine if the given exception was caused by a lost connection.
|
||
|
*
|
||
|
* @param \Throwable $e
|
||
|
* @return bool
|
||
|
*/
|
||
|
protected function causedByLostConnection(Throwable $e)
|
||
|
{
|
||
|
$message = $e->getMessage();
|
||
|
|
||
|
return Str::contains($message, [
|
||
|
'server has gone away',
|
||
|
'no connection to the server',
|
||
|
'Lost connection',
|
||
|
'is dead or not enabled',
|
||
|
'Error while sending',
|
||
|
'decryption failed or bad record mac',
|
||
|
'server closed the connection unexpectedly',
|
||
|
'SSL connection has been closed unexpectedly',
|
||
|
'Error writing data to the connection',
|
||
|
'Resource deadlock avoided',
|
||
|
'Transaction() on null',
|
||
|
'child connection forced to terminate due to client_idle_limit',
|
||
|
'query_wait_timeout',
|
||
|
'reset by peer',
|
||
|
'Physical connection is not usable',
|
||
|
'TCP Provider: Error code 0x68',
|
||
|
'ORA-03114',
|
||
|
'Packets out of order. Expected',
|
||
|
'Adaptive Server connection failed',
|
||
|
'Communication link failure',
|
||
|
'connection is no longer usable',
|
||
|
'Login timeout expired',
|
||
|
'SQLSTATE[HY000] [2002] Connection refused',
|
||
|
'running with the --read-only option so it cannot execute this statement',
|
||
|
'The connection is broken and recovery is not possible. The connection is marked by the client driver as unrecoverable. No attempt was made to restore the connection.',
|
||
|
'SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Try again',
|
||
|
'SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known',
|
||
|
'SQLSTATE[HY000]: General error: 7 SSL SYSCALL error: EOF detected',
|
||
|
'SQLSTATE[HY000] [2002] Connection timed out',
|
||
|
'SSL: Connection timed out',
|
||
|
'SQLSTATE[HY000]: General error: 1105 The last transaction was aborted due to Seamless Scaling. Please retry.',
|
||
|
'Temporary failure in name resolution',
|
||
|
]);
|
||
|
}
|
||
|
}
|