PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Lỗi không khớp dữ liệu cấp độ khi sử dụng \ PDO ::ATTR_EMULATE_PREPARES => true

1) Đầu tiên, bạn cần thay đổi tùy chọn PDO mà bạn đang cung cấp trong các tùy chọn trong mảng pgsql của database.php theo cách phù hợp như được đưa ra bên dưới.

'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) Thứ hai, và điều quan trọng nhất là đảm bảo rằng bạn sử dụng đặt "ATTR_EMULATE_PREPARES" thành "true" với mỗi kết nối cơ sở dữ liệu mà bạn cố gắng kết nối trong Database.php của mình tệp.

Ví dụ:

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

Vui lòng đảm bảo sử dụng "ATTR_EMULATE_PREPARES" thành true cho mỗi kết nối cơ sở dữ liệu mà bạn thực hiện trong ứng dụng của mình, trong nhận xét của bạn, bạn chỉ kết nối với "pgsql" nhấn mạnh chỉ cho kết nối sql postgres chứ không phải với cơ sở dữ liệu mà ứng dụng của bạn giao tiếp. nằm trong postgres.

Hy vọng điều này sẽ giúp bạn giải quyết thắc mắc của mình. Hãy tận hưởng !!!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cải thiện một chức năng mà UPSERT dựa trên mảng đầu vào

  2. gói pg nodejs dẫn đến 'cú pháp nhập không hợp lệ cho kiểu json'

  3. Postgres chỉ chèn hàng nếu số hàng dưới một giới hạn

  4. Có thể đếm tất cả các hàng có cùng id với COUNT không?

  5. PGError:không có kết nối với máy chủ sau khi không hoạt động