[PHP-users 633] Re: PHP 経由の SQL INSERT エラーについて

Tatsuo Ishii php-users@php.gr.jp
Sun, 08 Jul 2001 23:27:25 +0900


石井です.

> serial(sequence)とuniqueのデータ型を持つテーブルを作成し、
> PHP経由でinsertを行いますと、PHPエラーが出ます。
> 
> 以下のテーブルを作成し、
> CREATE TABLE tb_testA(
> 	test_id SERIAL,
> 	test_text TEXT UNIQUE NOT NULL
> );
> WWW(PHP3)経由で以下のようなスクリプトを実行しました。
> <?
>     $conn = pg_connect("","","test");
>     $rs = pg_exec($conn, "INSERT INTO tb_testA(test_text) VALUES('t1')");
>     print $rs;
> ?>
> 
> その結果、
> Warning: PostgresSQL query failed: ERROR: Cannot insert a 
> duplicate key into unique index tb_testA_test_pkey in 
> test.php3 on line 3
> というエラーが出ました。

テーブル定義とエラーメッセージが合っていないようですが? 
"tb_testA_test_pkey" とあるので,tb_testA には主キーがあるはずです.

> テーブルを確認しましたところ、データは収められていました。
> test=# SELECT * FROM tb_testA;
>  test_id | test_text   
> ---------+-----------
>        1 |        t1 
> (1 rows)
> 
> コマンドラインからINSERTを行いますと、エラーは出ません。

以上から(投稿されたメールの情報が誤りでない限り),「PHPとpsqlで実際に
は違うDBをアクセスしている」に1票.

PostgreSQLの設定で,デバッグ出力をたくさん出させ,実際にどこのDBに接続
しているのか確認した方がよいのでは?
--
Tatsuo Ishii