95 lines
2.4 KiB
JavaScript
95 lines
2.4 KiB
JavaScript
import {
|
|
DeadlockException,
|
|
LockWaitTimeoutException,
|
|
TableExistsException,
|
|
TableNotFoundException,
|
|
ForeignKeyConstraintViolationException,
|
|
UniqueConstraintViolationException,
|
|
InvalidFieldNameException,
|
|
NonUniqueFieldNameException,
|
|
SyntaxErrorException,
|
|
ConnectionException,
|
|
NotNullConstraintViolationException,
|
|
ExceptionConverter,
|
|
CheckConstraintViolationException,
|
|
} from '@mikro-orm/core';
|
|
export class MySqlExceptionConverter extends ExceptionConverter {
|
|
/**
|
|
* @see http://dev.mysql.com/doc/refman/5.7/en/error-messages-client.html
|
|
* @see http://dev.mysql.com/doc/refman/5.7/en/error-messages-server.html
|
|
* @see https://github.com/doctrine/dbal/blob/master/src/Driver/AbstractMySQLDriver.php
|
|
*/
|
|
convertException(exception) {
|
|
/* v8 ignore next */
|
|
switch (exception.errno) {
|
|
case 1213:
|
|
return new DeadlockException(exception);
|
|
case 1205:
|
|
return new LockWaitTimeoutException(exception);
|
|
case 1050:
|
|
return new TableExistsException(exception);
|
|
case 1051:
|
|
case 1146:
|
|
return new TableNotFoundException(exception);
|
|
case 1216:
|
|
case 1217:
|
|
case 1451:
|
|
case 1452:
|
|
case 1701:
|
|
return new ForeignKeyConstraintViolationException(exception);
|
|
case 3819:
|
|
case 4025:
|
|
return new CheckConstraintViolationException(exception);
|
|
case 1062:
|
|
case 1557:
|
|
case 1569:
|
|
case 1586:
|
|
return new UniqueConstraintViolationException(exception);
|
|
case 1054:
|
|
case 1166:
|
|
case 1611:
|
|
return new InvalidFieldNameException(exception);
|
|
case 1052:
|
|
case 1060:
|
|
case 1110:
|
|
return new NonUniqueFieldNameException(exception);
|
|
case 1064:
|
|
case 1149:
|
|
case 1287:
|
|
case 1341:
|
|
case 1342:
|
|
case 1343:
|
|
case 1344:
|
|
case 1382:
|
|
case 1479:
|
|
case 1541:
|
|
case 1554:
|
|
case 1626:
|
|
return new SyntaxErrorException(exception);
|
|
case 1044:
|
|
case 1045:
|
|
case 1046:
|
|
case 1049:
|
|
case 1095:
|
|
case 1142:
|
|
case 1143:
|
|
case 1227:
|
|
case 1370:
|
|
case 1429:
|
|
case 2002:
|
|
case 2005:
|
|
return new ConnectionException(exception);
|
|
case 1048:
|
|
case 1121:
|
|
case 1138:
|
|
case 1171:
|
|
case 1252:
|
|
case 1263:
|
|
case 1364:
|
|
case 1566:
|
|
return new NotNullConstraintViolationException(exception);
|
|
}
|
|
return super.convertException(exception);
|
|
}
|
|
}
|