ďťż
 
PostgreSQL i dziwny problem ďťż
 
PostgreSQL i dziwny problem
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

PostgreSQL i dziwny problem



mr-owl - 06-03-2007 00:02
PostgreSQL i dziwny problem
  Witam,

Mam tabelę:

CREATE TABLE item
( item_id SERIAL PRIMARY KEY
, item_isbn char(10) NOT NULL
,...
, item_country char(2) NOT NULL
....
) WITHOUT OIDS;

I teraz gdy robię dla niej (aktualizacja tylko jednego wiersza):

UPDATE item SET item_country='UK' WHERE item_country='UK' AND item_id=1454025;

Dostaję taki komunikat:

ERROR: duplicate key violates unique constraint "item_pkey"
SQL state: 23505

Jest to o tyle dziwne że tyczy się to tylko i wyłącznie tego rekordu, wszystkie
inne rekordy aktualizują się bez najmniejszego problemu. Co może być tego
przyczyną? Coś ze sprzętem?

Pozdrawiam,

mr-owl

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl





Herakles - 06-03-2007 00:02

  mr-owl wrote:

> Witam,
>
> Mam tabelę:
>
> CREATE TABLE item
> ( item_id SERIAL PRIMARY KEY
> , item_isbn char(10) NOT NULL
> ,...
> , item_country char(2) NOT NULL
> ...
> ) WITHOUT OIDS;
>
> I teraz gdy robię dla niej (aktualizacja tylko jednego wiersza):
>
> UPDATE item SET item_country='UK' WHERE item_country='UK' AND
> item_id=1454025;
>
> Dostaję taki komunikat:
>
> ERROR: duplicate key violates unique constraint "item_pkey"
> SQL state: 23505

dziwne, zgłoś to.

Spróbuj pozatym:
#createdb x2
#pg_dump twoja_baza|psql x2
#dropdb twoja_baza
#echo "aletr database x2 rename to twoja_baza"|psql

i zobacz czy problem się powtarza.




mr-owl - 06-03-2007 00:03

  > mr-owl wrote:
>
> > Witam,
> >
> > Mam tabelę:
> >
> > CREATE TABLE item
> > ( item_id SERIAL PRIMARY KEY
> > , item_isbn char(10) NOT NULL
> > ,...
> > , item_country char(2) NOT NULL
> > ...
> > ) WITHOUT OIDS;
> >
> > I teraz gdy robię dla niej (aktualizacja tylko jednego wiersza):
> >
> > UPDATE item SET item_country='UK' WHERE item_country='UK' AND
> > item_id=1454025;
> >
> > Dostaję taki komunikat:
> >
> > ERROR: duplicate key violates unique constraint "item_pkey"
> > SQL state: 23505
>
> dziwne, zgłoś to.
>
> Spróbuj pozatym:
> #createdb x2
> #pg_dump twoja_baza|psql x2
> #dropdb twoja_baza
> #echo "aletr database x2 rename to twoja_baza"|psql
>
> i zobacz czy problem się powtarza.

Witam

Po wykonaniu tego mam:

SELECT * FROM item WHERE item_id=1454025;
dostaję dwa wiersze a na bazie oryginalnej tylko jeden. Co teraz z tym zrobić?

Pozdrawiam,

mr-owl

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl




=?ISO-8859-2?Q?Micha=B3_Zaborowski?= - 06-03-2007 00:03

  Tak na oko - wygląda, że indeks się rozjechał.
Proszę wykonać:
VACUUM FULL item;
Można też skasować indeks i postawić go na nowo.
jak są skopane dane - wyłoży się z wyjątkiem...

--
Pozdrawiam,
Michał Zaborowski (TeXXaS)





=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 07-03-2007 00:05

  Michał Zaborowski wrote:
> Tak na oko - wygląda, że indeks się rozjechał.
> Proszę wykonać:
> VACUUM FULL item;
> Można też skasować indeks i postawić go na nowo.
> jak są skopane dane - wyłoży się z wyjątkiem...

Jak index winien, to lepiej REINDEX.

--
P.M.




Herakles - 07-03-2007 00:05

  Michał Zaborowski wrote:

> Tak na oko - wygląda, że indeks się rozjechał.
> Proszę wykonać:
> VACUUM FULL item;
> Można też skasować indeks i postawić go na nowo.
> jak są skopane dane - wyłoży się z wyjątkiem...
>
Nie! Regułka primary key się rozjechała, jaka to wersja prostgresa?
Proponuję usunąć dodatkowy rekord i zapomnieć o całej sprawie.




mr-owl - 07-03-2007 00:05

  > Michał Zaborowski wrote:
>
> > Tak na oko - wygląda, że indeks się rozjechał.
> > Proszę wykonać:
> > * *VACUUM FULL item;
> > Można też skasować indeks i postawić go na nowo.
> > jak są skopane dane - wyłoży się z wyjątkiem...
> >
> Nie! Regułka primary key się rozjechała, jaka to wersja prostgresa?
> Proponuję usunąć dodatkowy rekord i zapomnieć o całej sprawie.
Zrobiłem tak:
1. wywaliłem wszystkie indeksy z tej tabeli
2. pełen backup
3. usunięcie bazy i restart serwera
4. założenie nowej bazy i odtworzenie bazy z backup-u, (po psql -d baza <
full.dmp nie miała założonego Primary Key dla item)
5. wywaliłem błędny rekord i założyłem primary key od początku
6. założyłem od nowa indeksy

Czy powinienem jeszcze coś zrobić?

Baza danych w wersji 8.1.3

Pozdrawiam,

mr-owl
5. czy jeszcze powinienem o czymś pamiętać

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl




=?ISO-8859-2?Q?Micha=B3_Zaborowski?= - 07-03-2007 00:05

  Herakles napisał(a):
> Michał Zaborowski wrote:
>
>> Tak na oko - wygląda, że indeks się rozjechał.
>> Proszę wykonać:
>> VACUUM FULL item;
>> Można też skasować indeks i postawić go na nowo.
>> jak są skopane dane - wyłoży się z wyjątkiem...
>>
> Nie! Regułka primary key się rozjechała,
>
Nie bardzo rozumiem co to takiego ta "reguła"... ;)
Użycie 'primary key' oznacza dla postgresa - 'załóż unikalny indeks'.
Proszę nie mnożyć pojęć, terminów i to w taki ostry sposób - potem
pytający będzie szukał opisu rozjechania się tej "reguły" i pewnie
nie znajdzie. Przejrzenie dokumentacji do indeksów pewnie
naświetliłoby problem.

--
Pozdrawiam,
Michał Zaborowski (TeXXaS)




hubert depesz lubaczewski - 07-03-2007 00:05

  On 2007-03-06, mr-owl <aphroheadWYTNIJTO@poczta.onet.pl> wrote:
> Czy powinienem jeszcze coś zrobić?
> Baza danych w wersji 8.1.3

upgrade do najnowszego 8.1.x

> 5. czy jeszcze powinienem o czymś pamiętać

tak. problem z rozjechanym indeksem to zazwyczaj problem ze sprzętem.
zaalokuj czas na diagnozowanie. memtest, testy dysku.

depesz

--
quicksil1er: "postgres is excellent, but like any DB it requires a
highly paid DBA. here's my CV!" :)
http://www.depesz.com/ - blog dla ciebie (i moje CV)
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= mysql i mysql-front, problem String line; if (line=="cos"){...}....problem [oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?= [PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?= postgresql - int/int Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ] [PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ? [MySQL] Problem z zapisem danych w bazie danych Problem z mysql - can't connect to MySQL/nietypowo...
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • misida.pev.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com