sql >> Base de Datos >  >> RDS >> PostgreSQL

Error de discrepancia de datos de Laravel al usar \PDO::ATTR_EMULATE_PREPARES => verdadero

1) Primero, debe cambiar la opción PDO que está dando en las opciones en la matriz pgsql de su base de datos.php de la manera correcta como se indica a continuación.

'pgsql' => [
        'driver' => 'pgsql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '5434'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),           
        'charset' => 'utf8',
        'prefix' => '',
        'schema' => 'public',
        'sslmode' => 'prefer',
        'options' => [
            PDO::ATTR_EMULATE_PREPARES => true
        ]       
        ]

2) En segundo lugar, y lo más importante es asegurarse de que utiliza "ATTR_EMULATE_PREPARES" en "true" con cada conexión de base de datos que intente conectar en su Database.php archivo.

Por ejemplo,

'test' => [
        'driver' => 'pgsql',
        'host' => env('test', '127.0.0.1'),
        'port' => env('test', '5434'),
        'database' => env('DB_TEST_DATABASE', 'test'),
        'username' => env('DB_USERNAME', 'test'),
        'password' => env('DB_PASSWORD', ''),
        'charset' => 'utf8',
        'prefix' => '',
        'schema' => 'public',
        'sslmode' => 'prefer',
        'options' => [
            PDO::ATTR_EMULATE_PREPARES => true
        ]           
    ],
'test1' => [
        'driver' => 'pgsql',
        'host' => env('test1', '127.0.0.1'),
        'port' => env('test1', '5434'),
        'database' => env('DB_TEST1_DATABASE', 'test1'),
        'username' => env('DB_USERNAME', 'test'),
        'password' => env('DB_PASSWORD', ''),
        'charset' => 'utf8',
        'prefix' => '',
        'schema' => 'public',
        'sslmode' => 'prefer',
        'options' => [
            PDO::ATTR_EMULATE_PREPARES => true
        ]           
    ]

Asegúrese de usar "ATTR_EMULATE_PREPARES" en verdadero para cada conexión de base de datos que realice en su aplicación, en sus comentarios, haga una conexión solo con "pgsql", que enfatiza solo la conexión postgres sql, y no con la base de datos que comunica su aplicación que está en postgres.

Espero que esto te ayude a resolver tu consulta. Disfruta!!!