PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Kesalahan ketidakcocokan data Laravel saat menggunakan \PDO::ATTR_EMULATE_PREPARES => true

1) Pertama, Anda perlu mengubah opsi PDO yang Anda berikan pada opsi di array pgsql dari database.php Anda dengan cara yang benar seperti yang diberikan di bawah ini.

'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) Kedua, dan yang paling penting adalah memastikan bahwa Anda menggunakan set "ATTR_EMULATE_PREPARES" menjadi "true" dengan setiap koneksi database yang Anda coba sambungkan di Database.php Anda berkas.

Misalnya,

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

Harap pastikan untuk menggunakan "ATTR_EMULATE_PREPARES" menjadi true untuk setiap koneksi database yang Anda buat di aplikasi Anda, dalam komentar Anda, Anda membuat koneksi hanya dengan "pgsql" yang menekankan untuk koneksi sql postgres saja, dan bukan dengan database yang dikomunikasikan oleh aplikasi Anda. ada di postgres.

Semoga ini membantu Anda menyelesaikan pertanyaan Anda. Selamat menikmati!!!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengimpor dump postgresql ke Heroku

  2. Cara membuat batasan pengecualian dengan rentang tanggal menggunakan sqlalchemy

  3. Permintaan untuk mengambil hitungan per jam dan nol jika tidak ada

  4. Apakah ada fungsi hash di PostgreSQL?

  5. Haruskah saya disconnect() jika saya menggunakan Apache::DBI's connect_cached()?