JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrgetMessage(), 'database is locked')) { return new LockWaitTimeoutException($exception, $query); } if ( str_contains($exception->getMessage(), 'must be unique') || str_contains($exception->getMessage(), 'is not unique') || str_contains($exception->getMessage(), 'are not unique') || str_contains($exception->getMessage(), 'UNIQUE constraint failed') ) { return new UniqueConstraintViolationException($exception, $query); } if ( str_contains($exception->getMessage(), 'may not be NULL') || str_contains($exception->getMessage(), 'NOT NULL constraint failed') ) { return new NotNullConstraintViolationException($exception, $query); } if (str_contains($exception->getMessage(), 'no such table:')) { return new TableNotFoundException($exception, $query); } if (str_contains($exception->getMessage(), 'already exists')) { return new TableExistsException($exception, $query); } if (str_contains($exception->getMessage(), 'has no column named')) { return new InvalidFieldNameException($exception, $query); } if (str_contains($exception->getMessage(), 'ambiguous column name')) { return new NonUniqueFieldNameException($exception, $query); } if (str_contains($exception->getMessage(), 'syntax error')) { return new SyntaxErrorException($exception, $query); } if (str_contains($exception->getMessage(), 'attempt to write a readonly database')) { return new ReadOnlyException($exception, $query); } if (str_contains($exception->getMessage(), 'unable to open database file')) { return new ConnectionException($exception, $query); } if (str_contains($exception->getMessage(), 'FOREIGN KEY constraint failed')) { return new ForeignKeyConstraintViolationException($exception, $query); } return new DriverException($exception, $query); } }