Вход Регистрация
Файл: vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLiteDriver.php
Строк: 209
<?php

namespace DoctrineDBALDriver;

use 
DoctrineDBALConnection;
use 
DoctrineDBALDriver;
use 
DoctrineDBALDriverDriverException as DeprecatedDriverException;
use 
DoctrineDBALExceptionConnectionException;
use 
DoctrineDBALExceptionDriverException;
use 
DoctrineDBALExceptionInvalidFieldNameException;
use 
DoctrineDBALExceptionLockWaitTimeoutException;
use 
DoctrineDBALExceptionNonUniqueFieldNameException;
use 
DoctrineDBALExceptionNotNullConstraintViolationException;
use 
DoctrineDBALExceptionReadOnlyException;
use 
DoctrineDBALExceptionSyntaxErrorException;
use 
DoctrineDBALExceptionTableExistsException;
use 
DoctrineDBALExceptionTableNotFoundException;
use 
DoctrineDBALExceptionUniqueConstraintViolationException;
use 
DoctrineDBALPlatformsSqlitePlatform;
use 
DoctrineDBALSchemaSqliteSchemaManager;

use function 
strpos;

/**
 * Abstract base implementation of the {@link Driver} interface for SQLite based drivers.
 */
abstract class AbstractSQLiteDriver implements DriverExceptionConverterDriver
{
    
/**
     * {@inheritdoc}
     *
     * @deprecated
     *
     * @link http://www.sqlite.org/c3ref/c_abort.html
     */
    
public function convertException($messageDeprecatedDriverException $exception)
    {
        if (
strpos($exception->getMessage(), 'database is locked') !== false) {
            return new 
LockWaitTimeoutException($message$exception);
        }

        if (
            
strpos($exception->getMessage(), 'must be unique') !== false ||
            
strpos($exception->getMessage(), 'is not unique') !== false ||
            
strpos($exception->getMessage(), 'are not unique') !== false ||
            
strpos($exception->getMessage(), 'UNIQUE constraint failed') !== false
        
) {
            return new 
UniqueConstraintViolationException($message$exception);
        }

        if (
            
strpos($exception->getMessage(), 'may not be NULL') !== false ||
            
strpos($exception->getMessage(), 'NOT NULL constraint failed') !== false
        
) {
            return new 
NotNullConstraintViolationException($message$exception);
        }

        if (
strpos($exception->getMessage(), 'no such table:') !== false) {
            return new 
TableNotFoundException($message$exception);
        }

        if (
strpos($exception->getMessage(), 'already exists') !== false) {
            return new 
TableExistsException($message$exception);
        }

        if (
strpos($exception->getMessage(), 'has no column named') !== false) {
            return new 
InvalidFieldNameException($message$exception);
        }

        if (
strpos($exception->getMessage(), 'ambiguous column name') !== false) {
            return new 
NonUniqueFieldNameException($message$exception);
        }

        if (
strpos($exception->getMessage(), 'syntax error') !== false) {
            return new 
SyntaxErrorException($message$exception);
        }

        if (
strpos($exception->getMessage(), 'attempt to write a readonly database') !== false) {
            return new 
ReadOnlyException($message$exception);
        }

        if (
strpos($exception->getMessage(), 'unable to open database file') !== false) {
            return new 
ConnectionException($message$exception);
        }

        return new 
DriverException($message$exception);
    }

    
/**
     * {@inheritdoc}
     *
     * @deprecated Use Connection::getDatabase() instead.
     */
    
public function getDatabase(Connection $conn)
    {
        
$params $conn->getParams();

        return 
$params['path'] ?? null;
    }

    
/**
     * {@inheritdoc}
     */
    
public function getDatabasePlatform()
    {
        return new 
SqlitePlatform();
    }

    
/**
     * {@inheritdoc}
     */
    
public function getSchemaManager(Connection $conn)
    {
        return new 
SqliteSchemaManager($conn);
    }
}
Онлайн: 2
Реклама