12. února 2007

Podivné chování PostgreSQL 8.1.7

Včera jsem se zas po asi týdnu dostal k tomu, abych pracoval na HFNis. Informačním systému pro bezdrátovou síť. Po provedení několika úprav jsem chtěl otestovat, zda nedošlo k nějaké regresi, zda stále funguje vše co fungovalo i dříve.

A tak jsem začal testovat jednotlivé případy použití. Přidávání uživatele fungovalo na první pokus tak jak bych od něj očekával, v podstatě jsem tam jen změnil některé sloupce na NOT NULL a některým sloupcům jsem toto omezení zrušil, tak jak jsme se v pátek dohodli na radě.

Při testování editace uložených informací pak již došlo k poměrně zásadnímu problému. Při update nad řádkem tabulky mi program hlásil podivnou chybu, SQLException s informací že 4. sloupec má špatný typ parametru. A tak jsem se jal zkoušet ten SQL dotaz s UPDATE zkracovat a různě upravovat. Dokonce jsem ho komplet smazal a pak napsal na zelené louce.

Nic z toho nepomohlo a tak jsem si pustil spojení k databázi z příkazové řádky a zkusil tento dotaz provést z konzole. A hle, krom toho, že je chybně parametr 4 jsem se konečně dozvěděl i něco víc:
ERROR:  attribute 4 has wrong type
DETAIL: Table has type character varying, but query expects character
varying.

OK, z s tímto už můžu za strýčkem Googlem, to už by mi mohl něco najít. A taky že našel:

http://comments.gmane.org/gmane.comp.db.postgresql.bugs/13397

Poučení pro příště: Když vám bude zlobit něco co předtím spolehlivě fungovalo a vy si nejste vědomi žádných úprav, tak to zkuste přímo z konzolového spojení s databází. Třebas se tak dozvíte víc jako jsem se dozvěděl já a nezabijete několik hodin tím, že budete honit duchy, tam kde žádní nejsou.

2 komentáře:

  1. Jo, možná by stálo za to zmínit, že k problému došlo nad sloupcem s VARCHAR(14) a CHECK omezením typu ~* E'^(\\+420){0,1}[0-9]{9}$'::text

    OdpovědětSmazat
  2. OK, tak v Etchi už je PostgreSQL 8.1.8 a vše funguje. Hurá!

    OdpovědětSmazat