sql >> Databasteknik >  >> RDS >> PostgreSQL

Fel i Laravel-datafel vid användning av \PDO::ATTR_EMULATE_PREPARES => sant

1) Först måste du ändra PDO-alternativet du anger i alternativen i pgsql-arrayen i din database.php på rätt sätt enligt nedan.

'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) För det andra, och det viktigaste är att se till att du använder ställ in "ATTR_EMULATE_PREPARES" till "true" med varje databasanslutning du försöker ansluta i din Databas.php fil.

Till exempel,

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

Se till att använda "ATTR_EMULATE_PREPARES" för varje databasanslutning du gör i din applikation, i dina kommentarer kopplar du endast till "pgsql", vilket betonar endast för postgres sql-anslutning, och inte med databasen som din applikation kommunicerar. är i postgres.

Hoppas detta hjälper dig att lösa din fråga. Njut!!!



  1. Sorterbara UUID och åsidosättande ActiveRecord::Base

  2. Tomt tecken ignoreras i where-satsen

  3. Utländska nycklar, blockering och uppdateringskonflikter

  4. Fortsätt få org.hibernate.exception.JDBCConnectionException:kunde inte köra frågan