[pgsql-jp: 35543] プライマリーキーが重複する??

shima tetuo mlmlml @ lily.freemail.ne.jp
2005年 6月 21日 (火) 20:42:03 JST


tetuoです。

PostgreSQL 8.0.3 on i686-pc-mingw32, compiled by GCC gcc.exe (GCC) 3.4.2
(mingw-special)
ウィンドウズ版のPostgresqlを使っています。

---------------
問題?
---------------
URLを管理する簡単なテーブルを作成しています。そこにURLを保存しているので
すが、プライマリーキーであるURL文字列が重複しており、Updateの際などにキー
重複エラーが発生します。

ERROR:  duplicate key violates unique constraint


---------------
テーブル定義
---------------
CREATE TABLE table_url
(
  url text NOT NULL,
  deleted bool NOT NULL DEFAULT false,
  CONSTRAINT table_url_pkey PRIMARY KEY (url)
) 
WITHOUT OIDS;

数万件あるデータの中で、300件近くこのような重複するURLが発生しており、原
因がはっきりしません。

---------------
原因追及の際に流したSQL
---------------
select
*
from
(select 
url,
count(url) as cnt
from
table_url
group by
url
limit 1000) targets
where
2 <= cnt

---------------
実行結果の例
---------------
            url                   |  cnt
-----------------------------------------
http://some.url.local/xxx/yyy/zzz    2
..............
..............
..............


***************
解決方法?
***************
視覚的には何も変わないので、何かゴミのようなバイトがどこかにあるのかと推
測しています。このような場合、SELECTした項目をバイト単位にばらすことは出
来ますか?
また、その他の解決方法が分かる方は連絡頂けると助かります。




pgsql-jp メーリングリストの案内