<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - duplicate key violates unique constraint - jak znaleźć winowajcę]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=272</link>
		<description><![CDATA[Najświeższe odpowiedzi w duplicate key violates unique constraint - jak znaleźć winowajcę.]]></description>
		<lastBuildDate>Thu, 20 Aug 2009 11:27:44 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: duplicate key violates unique constraint - jak znaleźć winowajcę]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1169#p1169</link>
			<description><![CDATA[To zapytanie delete, skasuje wszystkie wiersze z measurment_id=123.
Sprawdz czy masz zdefiniowane w tabeli oid'y np zapytaniem
[code]
select  oid, measurment_id from eam_measurement_data;
[/code]
Czy pojawia sie jakies wartosci w kolumnie oid (i czy w ogóle pojawi sie kolumna oid)]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Thu, 20 Aug 2009 11:27:44 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1169#p1169</guid>
		</item>
		<item>
			<title><![CDATA[Odp: duplicate key violates unique constraint - jak znaleźć winowajcę]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1168#p1168</link>
			<description><![CDATA[Jeszcze jedno pytanie jak skasować duplikaty i zostawić tylko 1 oryginał?
To usuwa wszystko, choć zaznaczyłem offsetem aby zostawił pierwszy wpis.
 delete from eam_measurement_data where measurement_id in (select measurement_id from eam_measurement_data where measurement_id='123' and timestamp='456' offset 1);]]></description>
			<author><![CDATA[dummy@example.com (zbiggy)]]></author>
			<pubDate>Thu, 20 Aug 2009 10:09:58 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1168#p1168</guid>
		</item>
		<item>
			<title><![CDATA[Odp: duplicate key violates unique constraint - jak znaleźć winowajcę]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1161#p1161</link>
			<description><![CDATA[Dzięki za linka. Poczytałem trochę  też o primary key i zrozumiałem, że może być na więcej niż jednej kolumnie. Wtedy w kolumnach mogą być podwójne wpisy i to jest OK. Dopiero kiedy wszystkie kolumny będące indexem zawierają jako wiersz to samo co inny wiersz w tej tabeli to wtedy jest błąd.]]></description>
			<author><![CDATA[dummy@example.com (zbiggy)]]></author>
			<pubDate>Wed, 19 Aug 2009 09:15:02 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1161#p1161</guid>
		</item>
		<item>
			<title><![CDATA[Odp: duplicate key violates unique constraint - jak znaleźć winowajcę]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1160#p1160</link>
			<description><![CDATA[Klucz nie musi byc na jednej kolumnie, może byc na dwu i więcej i tu jest na dwóch kolumnach measurement_id, "timestamp".
Nie sądzę aby celem REINDEX było m.in. usuwanie  wierszy, trochę to by bylo niebezpieczne chyba, nie myślisz.
Tu [url]http://www.postgresql.org/docs/8.2/static/sql-reindex.html[/url] masz napisane kiedy używa się REINDEX]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Wed, 19 Aug 2009 08:56:55 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1160#p1160</guid>
		</item>
		<item>
			<title><![CDATA[Odp: duplicate key violates unique constraint - jak znaleźć winowajcę]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1159#p1159</link>
			<description><![CDATA[Dzięki za tego selecta do wyszukiwania podwójnych wpisów. Mam jeszcze jedno pytanie. Patrząc na tę tabelę powyżej czy mógłbyś mi powiedzieć na postawie tego błędu która kolumna zawiera ten błędny podwójny wpis? Bo jak popatrzyłem na to:
[code]ERROR:  duplicate key violates unique constraint "measurement_data_id_time_pk"[/code]
potem na to:
[code]ALTER TABLE ONLY eam_measurement_data
    ADD CONSTRAINT measurement_data_id_time_pk PRIMARY KEY (measurement_id, "timestamp");[/code]
i w końcu na to:
[code]hqdb-# \d eam_measurement_data
    Table "public.eam_measurement_data"
     Column     |     Type      | Modifiers 
----------------+---------------+-----------
 measurement_id | integer       | not null
 timestamp      | bigint        | not null
 value          | numeric(24,5) | 
Indexes:
    "measurement_data_id_time_pk" PRIMARY KEY, btree (measurement_id, "timestamp")
    "measurement_data_time_idx" btree ("timestamp")[/code]

To w końcu zgłupiałem do reszty. Na których kolumnach jest wreszcie ten zepsuty PK? measurement_id czy timestamp?
przecież PK to zawsze jedna kolumna, a tu są dwie.

Skoro REINDEX DATABASE jest do naprawiania indeksów to jak to może zrobić bez usuwania podwójnego pk? Przecież jedynym błędem pk jest właśnie podwójny wpis. Bez tego to narzędzie jest bez sensu.]]></description>
			<author><![CDATA[dummy@example.com (zbiggy)]]></author>
			<pubDate>Wed, 19 Aug 2009 08:42:18 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1159#p1159</guid>
		</item>
		<item>
			<title><![CDATA[Odp: duplicate key violates unique constraint - jak znaleźć winowajcę]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1158#p1158</link>
			<description><![CDATA[Zacząłem tropić problem i wyszukałem jeszcze to:
[code]
hqdb-# \d eam_measurement_data
    Table "public.eam_measurement_data"
     Column     |     Type      | Modifiers 
----------------+---------------+-----------
 measurement_id | integer       | not null
 timestamp      | bigint        | not null
 value          | numeric(24,5) | 
Indexes:
    "measurement_data_id_time_pk" PRIMARY KEY, btree (measurement_id, "timestamp")
    "measurement_data_time_idx" btree ("timestamp")[/code]]]></description>
			<author><![CDATA[dummy@example.com (zbiggy)]]></author>
			<pubDate>Wed, 19 Aug 2009 08:23:11 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1158#p1158</guid>
		</item>
		<item>
			<title><![CDATA[Odp: duplicate key violates unique constraint - jak znaleźć winowajcę]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1157#p1157</link>
			<description><![CDATA[[quote=rski]Tak znajdziesz duble
[code]
select measurement_id, timestamp, count(*) from eam_measurement_data
group by  measurement_id, timestamp having count(*)>1
[/code]

[quote]
Dlaczego REINDEX DATABASE tego nie załatwił? Przecież do tego jest przeznaczony?
[/quote]
nie rozumiem co masz na mysli. Chcesz aby reindex usunął dublujące się wpisy?[/quote]

Tak. :)]]></description>
			<author><![CDATA[dummy@example.com (zbiggy)]]></author>
			<pubDate>Wed, 19 Aug 2009 08:19:53 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1157#p1157</guid>
		</item>
		<item>
			<title><![CDATA[Odp: duplicate key violates unique constraint - jak znaleźć winowajcę]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1156#p1156</link>
			<description><![CDATA[Tak znajdziesz duble
[code]
select measurement_id, timestamp, count(*) from eam_measurement_data
group by  measurement_id, timestamp having count(*)>1
[/code]

[quote]
Dlaczego REINDEX DATABASE tego nie załatwił? Przecież do tego jest przeznaczony?
[/quote]
nie rozumiem co masz na mysli. Chcesz aby reindex usunął dublujące się wpisy?]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Wed, 19 Aug 2009 08:15:28 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1156#p1156</guid>
		</item>
		<item>
			<title><![CDATA[Odp: duplicate key violates unique constraint - jak znaleźć winowajcę]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1155#p1155</link>
			<description><![CDATA[[quote=rski]Kiedy dostajesz ten error?, po jakiej operacji? bo z założenia nie ma możliwości aby istniały dwie wartości klucza głownego o tej samej wartości w tabeli.
Poza tym to co podajesz measurement_data_id_time_pk to prawdopodobie nie jest nazwa klolumny tylko constrainta który siedzi na jakiejś kolumnie. Wszystkie potrzebne informacje aby zidentyfikowac te kolumne w obrębie bazy znajdziesz w information_schema (wiecej znajdziesz tu [url]http://www.postgresql.org/docs/current/static/information-schema.html[/url] )[/quote]

JBoss Operation Network wali tym w logach ciurkiem podczas startu i pokazuje, że serwer jest wiecznie w trybie start in progress (choć już dawno wystartował). Tylko tyle widzę. Za pomocą pg_dump zrobiłem eksport bazy i znalazłem to:

[code]
--
-- Name: measurement_data_id_time_pk; Type: CONSTRAINT; Schema: public; Owner: hqadmin; Tablespace: 
--

ALTER TABLE ONLY eam_measurement_data
    ADD CONSTRAINT measurement_data_id_time_pk PRIMARY KEY (measurement_id, "timestamp");[/code]

Czyli jak w kolumnie measurement_id w tabeli eam_measurement_data znajdę dwa identyczne wpisy i usunę jeden to błąd zniknie?
Jak odnaleźć podwójny wpis w takiej kolumnie?
Dlaczego REINDEX DATABASE tego nie załatwił? Przecież do tego jest przeznaczony?]]></description>
			<author><![CDATA[dummy@example.com (zbiggy)]]></author>
			<pubDate>Wed, 19 Aug 2009 07:36:28 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1155#p1155</guid>
		</item>
		<item>
			<title><![CDATA[Odp: duplicate key violates unique constraint - jak znaleźć winowajcę]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1154#p1154</link>
			<description><![CDATA[Kiedy dostajesz ten error?, po jakiej operacji? bo z założenia nie ma możliwości aby istniały dwie wartości klucza głownego o tej samej wartości w tabeli.
Poza tym to co podajesz measurement_data_id_time_pk to prawdopodobie nie jest nazwa klolumny tylko constrainta który siedzi na jakiejś kolumnie. Wszystkie potrzebne informacje aby zidentyfikowac te kolumne w obrębie bazy znajdziesz w information_schema (wiecej znajdziesz tu [url]http://www.postgresql.org/docs/current/static/information-schema.html[/url] )]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Tue, 18 Aug 2009 13:19:42 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1154#p1154</guid>
		</item>
		<item>
			<title><![CDATA[Odp: duplicate key violates unique constraint - jak znaleźć winowajcę]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1153#p1153</link>
			<description><![CDATA[[quote=zbiggy]2. Jeśli jednak nie ma takiej metody to jak wyśledzić wadliwy wiersz w całej bazie (nie znam układu tej bazy)?[/quote]
Chodzi mi o to czy jest jakaś wyszukiwarka np. podaję nazwę kolumny a PG pokazuje mi w której  bazie i w której tabeli siedzi ta kolumna.
Czy jest jakiś select, który wypluje tylko podwójne wpisy dla measurement_data_id_time_pk?]]></description>
			<author><![CDATA[dummy@example.com (zbiggy)]]></author>
			<pubDate>Tue, 18 Aug 2009 11:53:02 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1153#p1153</guid>
		</item>
		<item>
			<title><![CDATA[duplicate key violates unique constraint - jak znaleźć winowajcę]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=1152#p1152</link>
			<description><![CDATA[Witam,

mam taki błąd:
ERROR:  duplicate key violates unique constraint "measurement_data_id_time_pk"

Z tego wynika, że chyba gdzieś jest jest 2 razy taki sam primary kluczyk w kolumnie measurement_data_id_time_pk
W celach leczniczych odpaliłem reindex database. Zrobił. Lecz błędu nie naprawił.
Chciałem jeszcze zrobić vacuum verbose lecz skończyły mi się sloty:
NOTICE:  number of page slots needed (30992) exceeds max_fsm_pages (20000)
PODPOWIEDŹ:  Consider increasing the configuration parameter "max_fsm_pages" to a value over 30992.

W końcu się napaliłem, że może jakoś ręcznie SQLem wytnę ten dodatkowy wadliwy wpis. Tylko jak tą kolumnę odnaleźć w bazie i jak wyśledzić który wiersz jest podwójny.

1. Czy ktoś mógłby mi powiedzieć jak to naprawić (może jest lepsza metoda niż moje kombinacje)?
2. Jeśli jednak nie ma takiej metody to jak wyśledzić wadliwy wiersz w całej bazie (nie znam układu tej bazy)?]]></description>
			<author><![CDATA[dummy@example.com (zbiggy)]]></author>
			<pubDate>Tue, 18 Aug 2009 11:48:53 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=1152#p1152</guid>
		</item>
	</channel>
</rss>
