Fórum Root.cz
Hlavní témata => Server => Téma založeno: 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"
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:
INSERT INTO "tabulka" ("id") values (576414935)
Nacež dostávám odpověd
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:
select * from "tabulka" where "id" = 576414935
Jenže výsledkem je, že postgres nic nenajde. Čím by toto mohlo být?
-
nehybal nekdo s pocitadlem pro unikatni index? vyhledej si tu chybu 23505, na to tema jsou ruzne odpovedi.
-
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í).
-
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.
-
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
-
Ahoj,
1) Co ti přesně řekne psql, když ten insert vložíš po tomto příkazu?
\set VERBOSITY verbose
2) Když odstraníš ten primary key, jde pak daná hodnota vložit? Pokud ano, jde pak znovu vytvořit primary key?
-
Chyba byla mezi klavesnicí a židlí a postgres se pořád chová korektně.
-
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ě.
-
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?!