[PHP-users 14878]Re: [PHP-users14665]PEARでクエリが実行されるときとされない時がある

Mashiki mashiki @ yanah.com
2003年 4月 24日 (木) 16:39:26 JST


 Mashikiです。

>いわきりです
>
>#余談
>DB::connect()って、pg_pconnectを内部で読んでるんでしたっけか?
>だったら、トランザクションの途中で問題があった場合、明示的に
>ROLLBACKをかけるか、disconnectで、PostgreSQLとのコネクションを
>切断しないかぎり、以降のSQL全てが
>current transaction is aborted, queries ignored until 
>end of transaction block
>と、怒られるように思えます。

DB::connect()のpgsql用の実装ですが、

    function connect($dsninfo, $persistent = false)
    {
		:
		:

        $connect_function = $persistent ? 'pg_pconnect' : 'pg_connect';
        // catch error
        ob_start();
        $conn = $connect_function($connstr);
        $error = ob_get_contents();
        ob_end_clean();
        if ($conn == false) {
            return $this->raiseError(DB_ERROR_CONNECT_FAILED, null,
                                     null, null, strip_tags($error));
        }
        $this->connection = $conn;
        return DB_OK;
    }

のようになってますのでconnectの第二パラメータ$persistent次第です。

sorako yamamotoさんの場合、これをtrueで呼んでいるので、falseに変えるか、
いわきりさんの余談の部分のとおりエラー処理を正しく行うべきですね。

おそらくこれが原因みたい。


PHP-users メーリングリストの案内