Fórum Root.cz

Hlavní témata => Server => Téma založeno: jinaq 17. 09. 2022, 22:43:25

Název: Postgres:Error pri vložení id (duplikace), při selectu nic nenajdu
Přispěvatel: jinaq 17. 09. 2022, 22:43:25
Zdravím, jsem poněkud zmaten chováním postgresu ("PostgreSQL 10.15 (Debian 10.15-1.pgdg90+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit")

Mám definovanou tabulku "tabulka"
Kód: [Vybrat]
CREATE TABLE public.tabulka (
    id bigint NOT NULL
);
ALTER TABLE ONLY public.tabulka
    ADD CONSTRAINT tabulka_pkey PRIMARY KEY (id);
Pokouším se vložit nový řádek do tabulky:
Kód: [Vybrat]
INSERT INTO "tabulka"  ("id") values (576414935)
Nacež dostávám odpověd
Citace
ERROR:  duplicate key value violates unique constraint "tabulka_pkey"
DETAIL:  Key (id)=(576414935) already exists.
SQL state: 23505
Takže se pokouším zmíněná data podle toho klíče najít:
Kód: [Vybrat]
select * from "tabulka" where "id" = 576414935
Jenže výsledkem je, že postgres nic nenajde. Čím by toto mohlo být?
Název: Re:Postgres:Error pri vložení id (duplikace), při selectu nic nenajdu
Přispěvatel: a6b 17. 09. 2022, 22:55:22
nehybal nekdo s pocitadlem pro unikatni index? vyhledej si tu chybu 23505, na to tema jsou ruzne odpovedi.
Název: Re:Postgres:Error pri vložení id (duplikace), při selectu nic nenajdu
Přispěvatel: Filip Jirsák 17. 09. 2022, 22:59:05
Provádíte oba příkazy (INSERT i SELECT) ve stejné transakci? Můžete mít před tím INSERTem ve stejné transakci jiné vložení záznamu se stejným ID. A pokud se pak díváte SELECTem z jiné transakce, ten záznam tam ještě nemusí být (záleží na izolaci transakcí).
Název: Re:Postgres:Error pri vložení id (duplikace), při selectu nic nenajdu
Přispěvatel: jinaq 17. 09. 2022, 23:11:00
Provádíte oba příkazy (INSERT i SELECT) ve stejné transakci? Můžete mít před tím INSERTem ve stejné transakci jiné vložení záznamu se stejným ID. A pokud se pak díváte SELECTem z jiné transakce, ten záznam tam ještě nemusí být (záleží na izolaci transakcí).
Ano, ve stejné transakci a je to i jediná transakce. Dokonce jsem primární klíč zrušil a znovu vytvořil. Ovšem pořád se stejnou chybou.
Název: Re:Postgres:Error pri vložení id (duplikace), při selectu nic nenajdu
Přispěvatel: jinaq 17. 09. 2022, 23:17:54
nehybal nekdo s pocitadlem pro unikatni index? vyhledej si tu chybu 23505, na to tema jsou ruzne odpovedi.
Nehýbal, pro jistotu jsem klíč i odstranil a vytvořil znova. Se stejným efektem. Databáze byla i korektne zastavena a znovu spuštěna
Název: Re:Postgres:Error pri vložení id (duplikace), při selectu nic nenajdu
Přispěvatel: Logik 18. 09. 2022, 00:38:52
Ahoj,
1) Co ti přesně řekne psql, když ten insert vložíš po tomto příkazu?
Kód: [Vybrat]
\set VERBOSITY verbose
2) Když odstraníš ten primary key, jde pak daná hodnota vložit? Pokud ano, jde pak znovu vytvořit primary key?
Název: Re:Postgres:Error pri vložení id (duplikace), při selectu nic nenajdu
Přispěvatel: jinaq 18. 09. 2022, 08:48:30
Chyba byla mezi klavesnicí a židlí a postgres se pořád chová korektně.
Název: Re:Postgres:Error pri vložení id (duplikace), při selectu nic nenajdu
Přispěvatel: Filip Jirsák 18. 09. 2022, 09:17:17
Chyba byla mezi klavesnicí a židlí a postgres se pořád chová korektně.
Můžete nám prozradit, čím to bylo? Pokud opravdu v obou příkazech byla stejná ID a stejné tabulky, vypadá to dost zvláštně.
Název: Re:Postgres:Error pri vložení id (duplikace), při selectu nic nenajdu
Přispěvatel: a6b 18. 09. 2022, 09:35:03
Chyba byla mezi klavesnicí a židlí a postgres se pořád chová korektně.
Můžete nám prozradit, čím to bylo? Pokud opravdu v obou příkazech byla stejná ID a stejné tabulky, vypadá to dost zvláštně.

to by me teda taky zajimalo?!