Posted By: Jovo () on 'CZdatabases'
Title: What the hey!
Date: Sat Jul 23 00:59:45 2011
Ahoj.
Stala se mi takova "vtipna" vec, doufam, ze cizi nestesti vas pobavi:-)
Tak jsem na ostrem prostredi pustil SQL script odladeny na testovacim - obe
prostredi jsou identicka DB2v7.1 - ve kterem jsem pridaval novy nullable int
sloupec: ALTER TABLE ADD COLUMN "km"...
Pak na nej davam SELECT km FROM... a dostanu "invalid token". SELECT *
funguje, sloupec KM vidim. Pro jistotu to zkusim oquotovat: SELECT "km"
FROM... a zase "invalid token". Zkousim to horem dolem, i z aplikace a porad
se mi to stavi na zadni. Po asi pul hodine prace me napadlo se pripojit pres
GUI rozhrani (Control Center) a ejhle:
...
prijato VARCHAR
vyslal BIGINT
"km" INTEGER
- na ostrem prostredi mi ALTER pridal nazev sloupce i s temi uvozovkami! No
nazdar...
Vzhledem k tomu, ze DROP COLUMN umi az v 9+ (fakt nekecam, DB2 az do verze
9 neumi DROP COLUMN!), jediny zpusob je vylejt to, DROPnout tabulku a zase to
tam nalejt. "Nastesti" verze 7 neumi ani INSERT SELECT:( a commandline utilita
db2look je jiz nekolik let rozbita a GUI na ni prekvapive spoleha pri
generovani DDL. Prece nebudu create script psat rucne opisovanim z obrazovky,
kdyz je tam 20 sloupcu!
Po dalsi hodine a pul jsem to vzdal kvuli referencni integrite - identity
sloupec db2 umi jen pouze kdyz je GENERATE ALWAYS, takze i kdybych se tam
pokousel nalejt spravna ID, skoncil bych s temi, co vygeneruje DB2 a budu ja
prochazet rozpadle FK a uvadet je v navazanych tabulkach (nastesti jen jedna)
na pravou miru?
Misto vyliti ve vlastni rezii jsem se na to vykaslal, pridal jsem novy
sloupec:
...
prijato VARCHAR
vyslal BIGINT
"km" INTEGER
kilometry INTEGER
, prepsal persistencni vrstvu a protoze PL pracuje vzdy s vyjmenovanymi
sloupci, tak to ani nevadi:-) Za 10 minut bylo vymalovano.
Aleluja!
Jovo.
PS: prvotni napad pridat tam sloupec KM bez uvozovek jsem zavrhnul - kdovico
by mi nacitani vracelo, zvlast kdyz system musi v jave pouzivat jeste
TYPE3 driver