fromMySqlError static method

PrismaException fromMySqlError(
  1. String message, {
  2. int? errorCode,
  3. String? constraintName,
  4. Object? originalError,
})

Map a MySQL error to a PrismaException.

Implementation

static PrismaException fromMySqlError(
  String message, {
  int? errorCode,
  String? constraintName,
  Object? originalError,
}) {
  switch (errorCode) {
    case 1044: // Access denied for user
    case 1045: // Access denied (using password)
      return AuthenticationException(
        message,
        originalError: originalError,
      );

    case 1049: // Unknown database
    case 2002: // Can't connect to MySQL server
    case 2003: // Can't connect to MySQL server on host
      return ConnectionException(
        message,
        originalError: originalError,
      );

    case 1062: // Duplicate entry
      return UniqueConstraintException(
        message,
        constraintName: constraintName,
        originalError: originalError,
      );

    case 1451: // Cannot delete or update a parent row (FK)
    case 1452: // Cannot add or update a child row (FK)
      return ForeignKeyException(
        message,
        constraintName: constraintName,
        originalError: originalError,
      );

    case 1048: // Column cannot be null
      return ConstraintException(
        message,
        constraintType: 'not_null',
        originalError: originalError,
      );

    case 4031: // Query timeout
      return QueryTimeoutException(
        message,
        originalError: originalError,
      );

    default:
      return InternalException(
        message,
        originalError: originalError,
        context: {'errorCode': errorCode},
      );
  }
}