PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Błąd niezgodności danych Laravela podczas używania \PDO::ATTR_EMULATE_PREPARES => true

1) Najpierw musisz zmienić opcję PDO, którą podajesz w opcjach w tablicy pgsql twojego database.php we właściwy sposób, jak podano poniżej.

'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) Po drugie, najważniejszą rzeczą jest upewnienie się, że przy każdym połączeniu z bazą danych, które próbujesz połączyć w swoim Database.php, używasz ustawienia „ATTR_EMULATE_PREPARES” na „prawda”. plik.

Na przykład

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

Upewnij się, że używasz "ATTR_EMULATE_PREPARES" dla każdego połączenia z bazą danych, które tworzysz w swojej aplikacji, w swoich komentarzach tworzysz połączenie tylko z "pgsql", który podkreśla tylko połączenie postgres sql, a nie z bazą danych, którą komunikuje Twoja aplikacja jest w postgresie.

Mam nadzieję, że pomoże to w rozwiązaniu Twojego zapytania. Ciesz się!!!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak tworzyć zapytania bez uwzględniania wielkości liter w Postgresql?

  2. Dlaczego migracja Sequelize tworzy tabelę, ale modele nie mogą połączyć się z bazą danych

  3. Wywołanie polecenia psql pg_dump w skrypcie wsadowym

  4. Jakie jest domyślne hasło do Postgresa

  5. Jak ustawić automatyczny przyrost klucza podstawowego w PostgreSQL?