Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace Doctrine\DBAL\Driver\API\MySQL;
6
 
7
use Doctrine\DBAL\Driver\API\ExceptionConverter as ExceptionConverterInterface;
8
use Doctrine\DBAL\Driver\Exception;
9
use Doctrine\DBAL\Exception\ConnectionException;
10
use Doctrine\DBAL\Exception\ConnectionLost;
11
use Doctrine\DBAL\Exception\DatabaseDoesNotExist;
12
use Doctrine\DBAL\Exception\DeadlockException;
13
use Doctrine\DBAL\Exception\DriverException;
14
use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException;
15
use Doctrine\DBAL\Exception\InvalidFieldNameException;
16
use Doctrine\DBAL\Exception\LockWaitTimeoutException;
17
use Doctrine\DBAL\Exception\NonUniqueFieldNameException;
18
use Doctrine\DBAL\Exception\NotNullConstraintViolationException;
19
use Doctrine\DBAL\Exception\SyntaxErrorException;
20
use Doctrine\DBAL\Exception\TableExistsException;
21
use Doctrine\DBAL\Exception\TableNotFoundException;
22
use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
23
use Doctrine\DBAL\Query;
24
 
25
/** @internal */
26
final class ExceptionConverter implements ExceptionConverterInterface
27
{
28
    /**
29
     * @link https://dev.mysql.com/doc/mysql-errors/8.0/en/client-error-reference.html
30
     * @link https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html
31
     */
32
    public function convert(Exception $exception, ?Query $query): DriverException
33
    {
34
        switch ($exception->getCode()) {
35
            case 1008:
36
                return new DatabaseDoesNotExist($exception, $query);
37
 
38
            case 1213:
39
                return new DeadlockException($exception, $query);
40
 
41
            case 1205:
42
                return new LockWaitTimeoutException($exception, $query);
43
 
44
            case 1050:
45
                return new TableExistsException($exception, $query);
46
 
47
            case 1051:
48
            case 1146:
49
                return new TableNotFoundException($exception, $query);
50
 
51
            case 1216:
52
            case 1217:
53
            case 1451:
54
            case 1452:
55
            case 1701:
56
                return new ForeignKeyConstraintViolationException($exception, $query);
57
 
58
            case 1062:
59
            case 1557:
60
            case 1569:
61
            case 1586:
62
                return new UniqueConstraintViolationException($exception, $query);
63
 
64
            case 1054:
65
            case 1166:
66
            case 1611:
67
                return new InvalidFieldNameException($exception, $query);
68
 
69
            case 1052:
70
            case 1060:
71
            case 1110:
72
                return new NonUniqueFieldNameException($exception, $query);
73
 
74
            case 1064:
75
            case 1149:
76
            case 1287:
77
            case 1341:
78
            case 1342:
79
            case 1343:
80
            case 1344:
81
            case 1382:
82
            case 1479:
83
            case 1541:
84
            case 1554:
85
            case 1626:
86
                return new SyntaxErrorException($exception, $query);
87
 
88
            case 1044:
89
            case 1045:
90
            case 1046:
91
            case 1049:
92
            case 1095:
93
            case 1142:
94
            case 1143:
95
            case 1227:
96
            case 1370:
97
            case 1429:
98
            case 2002:
99
            case 2005:
100
            case 2054:
101
                return new ConnectionException($exception, $query);
102
 
103
            case 2006:
104
                return new ConnectionLost($exception, $query);
105
 
106
            case 1048:
107
            case 1121:
108
            case 1138:
109
            case 1171:
110
            case 1252:
111
            case 1263:
112
            case 1364:
113
            case 1566:
114
                return new NotNullConstraintViolationException($exception, $query);
115
        }
116
 
117
        return new DriverException($exception, $query);
118
    }
119
}