Egy mysql adatbázis költöztetése során kiderült, hogy olyan értékek vannak benne, amik nem lehetnének. Tipikusan ezek enum mezők, amik nem lehetnek NULL értékűek, nem üres értkélistával. Mégis üres string van bennük.
A forrás szerveren - régebbi mysql verzió - gond nélkül fut a program, de már ott is ilyen adatok vannak.
Az új, frissebb verziójú szerveren, az adatok importja közben jelzi, hogy érvénytelen adat, és leáll az import.
Mivel minden ilyen konkrét jelzés eddig csak a fenti típusú hibára jelentkezett, ezért az INSERT parancsokat INSERT IGNORE parancsra cseréltem. Így betöltötte a teljes adatbázist. Meglepetésemre ugyanígy hibás adatokkal. (Azt vártam volna, hogy ezeket átugorja.)
Most tehát van egy szintén a definíciónak nem megfelelő adattartalmú adatbázisom, amin a program ugyan továbbra is gond nélkül fut, de én mégsem vagyok nyugodt. És itt jön a kérdés:
Hogyan tudnám arra kérni a mysql-t, hogy mutassa meg, mely rekordok ütköznek a definícióval?
- 209 megtekintés
Hozzászólások
WHERE mezo IS NULL OR mezo NOT IN ('ertek1'...'ertekN')
- A hozzászóláshoz be kell jelentkezni
Nem pontosan erre gondoltam. A konkrét üres értékekre rá tudok keresni. Olyan ellenőrzés kellene, ami az összes invalid adatot kihozza, és nem nekem kell minden tábla minden mezőjére külön feltételt írnom, hogy valid értékek vannak-e benne.
Jelenleg tudok pár tábla pár konkrét mezőjéről, de nem tudom, hogy mennyi van összesen.
A mysqlcheck extended módban is lefutott, és az sem jelez semmilyen hibát. :O
Fura, hogy egy adatbázis-kezelőnek nincs ilyen szintű konzisztencia-ellenőrzése.
- A hozzászóláshoz be kell jelentkezni
SELECT COLUMN_TYPE FROM information_schema. `COLUMNS` WHERE TABLE_NAME = 'TÁBLA' AND COLUMN_NAME ='MEZŐ';
Ez visszaadja a mező formátumát és értékeit.
- A hozzászóláshoz be kell jelentkezni
Mivel a mysql azt mondja magáról, hogy ez definíció szerinti működés, valóban kénytelen voltam a schema alapján kikeresni, hogy mely mezőkben vannak invalid adatok. Így végül meglett az összes, és csak remélni merem, hogy nincs más vicces trükk még az adatokban, amiről nem tudok.
- A hozzászóláshoz be kell jelentkezni
Hol volt, hol nem volt, volt egy országos cég, ahol anno csináltunk adattisztítást. Volt egy Krumperberg Béláné Alíz, akinek valami 700 gyereke volt. Mint kiderült, az adatbázis nem fogadott el üres értékez az anyja neve mezőbe és ezért azt találta ki valaki, hogy használjanak egy olyan nevet, ami biztosan nincs. Aztán ez országosan elterjed és ha az ügyfél nem adta meg az anyja nevét, akkor ez került oda ...
- A hozzászóláshoz be kell jelentkezni