Windows Server MySql Server 5.6
Sziasztok,
van egy Windows szerverren telepítve Mysql Server 5.6.
hol tudom beállítani, hogy adatításkór ne legyen kötelező minden mezőt kitölteni.
pl.
id | file | nev | cim | eletkor
insert into tabla(file,nev,cim) values('kep.jpg','Kresz Géza','Alma u.1.');
nom fut le azzal hogy állítsak be alapértelmezett értéket az eletkornak.
(persze, ha beállítok egy alapértelmezett életkort NULL akkor lefut), de nem szeretném az egész atatbázist átírni.
Hol tudom ezt kikapcsolni?
Köszi: Simisoma
■ van egy Windows szerverren telepítve Mysql Server 5.6.
hol tudom beállítani, hogy adatításkór ne legyen kötelező minden mezőt kitölteni.
pl.
id | file | nev | cim | eletkor
insert into tabla(file,nev,cim) values('kep.jpg','Kresz Géza','Alma u.1.');
nom fut le azzal hogy állítsak be alapértelmezett értéket az eletkornak.
(persze, ha beállítok egy alapértelmezett életkort NULL akkor lefut), de nem szeretném az egész atatbázist átírni.
Hol tudom ezt kikapcsolni?
Köszi: Simisoma
Axial
hoppá
bocs
Null
A dokumentáció alapján nem
A leírtak alapján az
eletkor
mező nemNOT NULL
, tehát a MySQL-nek be kellett volna állítania rajta egyDEFAULT NULL
-t a tábla létrehozásakor.Mindenesetre szerintem a következő opcióid vannak:
- Frissíted az adatbázis sémádat, hogy legyen azokon a mezőkön
DEFAULT
érték, amiket szeretnél elhagyni.- Úgy írod meg a lekérdezéseidet, hogy tartalmazzák a kívánt alapértelmezett értéket.
Ha valahogyan ezek mégis
NOT NULL
mezők, akkor esetleg kikapcsolhatod a "strict mode"-ot (én nem tenném, inkább korrektül írnám meg a sémát/lekérdezéseket), és akkor az oszlop típusának megfelelő alapértelmezett érték kerül beszúrásra elvileg.De, NOT NULL
Persze akkor lenne tuti, ha lenne egy struktúra dump és egy copy-paste hibaüzenet. :)
Ettől függetlenül a két (első) opció teljesen jó, én leginkább a sémát pártolom, a db legyen mindig pontosan olyan, amilyennek a helyes működéshez kell.
(Kérdezőnek: ez egy apró struktúra - módosítás, nem kell "átírni az egész adatbázist", de még ha kéne is, akkor is jobb, mint egy rossz db.)
Utolsó opció nem opció.. :)
Ez szerintem arra utal, hogy
NULL
:Ez igaz,
insert into tabla(file,nev,cim) values('kep.jpg','Kresz Géza','Alma u.1.');
,mert megkaphatná a
NULL
értéket, de mint írja, hibát dob.Kicsit ellentmondásos a kérdés, szerintem több dolgot kipróbált és így nem egyetlen esetet látunk.
Struktúra?
Ha nem sikerül megoldani Endyl első két opciójával, akkor ez mindenképp kellene, lehetőleg a példa insert kóddal együtt és a pontos hibaüzenet.
Ha az
eletkor
mező a struktúrában NOT NULL, akkor az elsődlegesen azt jelenti, hogy az alkalmazásnak kötelező megadnia. Ha nem mindig kötelező, akkor legyen nullable. Ha pedig logikailag kötelező és nem mindig ismert az értéke, akkor plDEFAULT 0
, mert haNOT NULL
, akkor a default sem lehet NULL. Szóval a jó megoldás leginkább attól függ, hogy pontosan mit szeretnél.