sql >> Databáze >  >> RDS >> PostgreSQL

Chyba nesouladu dat Laravel při použití \PDO::ATTR_EMULATE_PREPARES => true

1) Nejprve musíte změnit volbu PDO, kterou zadáváte v možnostech v poli pgsql vaší databáze.php správným způsobem, jak je uvedeno níže.

'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) Za druhé, a nejdůležitější věcí je ujistit se, že používáte nastavení "ATTR_EMULATE_PREPARES" na "true" s každým databázovým připojením, které se pokoušíte připojit ve vaší Database.php soubor.

Například,

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

Ujistěte se, že používáte "ATTR_EMULATE_PREPARES" na hodnotu true pro každé připojení k databázi, které vytvoříte ve své aplikaci, ve svých komentářích vytvoříte připojení pouze s "pgsql", což klade důraz pouze na připojení postgres sql, a ne s databází, kterou vaše aplikace komunikuje, které je v postgresu.

Doufám, že vám to pomůže vyřešit váš dotaz. Užijte si to!!!



  1. Zdroj dat JNDI pro oracle s grály 1.3

  2. Jaké jsou výhody režimu only_full_group_by?

  3. postgresql - počet (žádné hodnoty null) každého sloupce v tabulce

  4. Hodnoty oddělené čárkou na funkci IN v oracle