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); } }