sql >> Database teknologi >  >> RDS >> PostgreSQL

Laravel data mismatch fejl under brug af \PDO::ATTR_EMULATE_PREPARES => sand

1) Først skal du ændre den PDO-indstilling, du giver i indstillingerne i pgsql-arrayet i din database.php, den rigtige måde er som angivet nedenfor.

'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) For det andet, og det vigtigste er at sørge for, at du bruger sæt "ATTR_EMULATE_PREPARES" til "true" med hver databaseforbindelse, du forsøger at forbinde i din Database.php fil.

For eksempel,

'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
        ]           
    ]

Sørg for at bruge "ATTR_EMULATE_PREPARES" til at true for hver databaseforbindelse, du laver i din applikation, i dine kommentarer forbinder du kun med "pgsql", som kun lægger vægt på postgres sql-forbindelse, og ikke med den database, som din applikation kommunikerer. er i postgres.

Håber dette hjælper dig med at løse dit spørgsmål. God fornøjelse!!!



  1. MYSQLI - WHERE IN array

  2. MySQL :Flere rækker som kommasepareret enkelt række

  3. Er det muligt at bruge flere/indlejrede MySQLi-sætninger?

  4. mysql, hvilken værdi har maksimalt antal