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',
 | |
|         ]);
 | |
|     }
 | |
| }
 |