sql >> データベース >  >> RDS >> PostgreSQL

\ PDO ::ATTR_EMULATE_PREPARES=>trueの使用中にLaravelデータの不一致エラーが発生しました

    1)まず、database.phpのpgsql配列のオプションで指定するPDOオプションを、以下のように正しい方法で変更する必要があります。

    '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)次に、最も重要なことは、 Database.php で接続しようとする各データベース接続で、「ATTR_EMULATE_PREPARES」を「true」に設定することを確認することです。 ファイル。

    たとえば、

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

    アプリケーションで行うデータベース接続ごとに、必ず「ATTR_EMULATE_PREPARES」をtrueに使用してください。コメントでは、postgres sql接続のみを強調する「pgsql」のみと接続し、アプリケーションが通信するデータベースとは接続しません。ポストグレスにあります。

    これがクエリの解決に役立つことを願っています。お楽しみください!!!



    1. Yiiで検索とフィルターの基準を追加する方法

    2. 最後の挿入IDを取得する標準的な方法は何ですか?

    3. Amazon RDSで「データをファイルにロードする」方法は?

    4. SELECT *[columnAを除く]FROM tableAを使用して列を除外しますか?