ugrás a tartalomhoz

Windows Server MySql Server 5.6

simisoma · 2017. Dec. 8. (P), 10.48
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
 
1

Axial

Hidvégi Gábor · 2017. Dec. 8. (P), 15.27
Mit értesz az axial alatt?
2

hoppá

simisoma · 2017. Dec. 8. (P), 16.04
csak nem tudok írni.... axial = azzal :-)

bocs
3

Null

Hidvégi Gábor · 2017. Dec. 8. (P), 17.26
Nem igazán értem, hogy mit is akarsz. Mi a baj azzal, ha az életkor mező alapértelmezett értéke NULL?
4

A dokumentáció alapján nem

Endyl · 2017. Dec. 8. (P), 21.16
A dokumentáció alapján nem értem, hogyan idézed elő ezt a hibát.

A leírtak alapján az eletkor mező nem NOT NULL, tehát a MySQL-nek be kellett volna állítania rajta egy DEFAULT 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.
5

De, NOT NULL

Pepita · 2017. Dec. 10. (V), 13.55
Szerintem pont, hogy NOT NULL, azért nem megy be az insert neki. Csak pontatlan a hibaüzenet, valami olyasmi, hogy "cannot be null and no default value".
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ó.. :)
7

Ez szerintem arra utal, hogy

Endyl · 2017. Dec. 10. (V), 19.48
Ez szerintem arra utal, hogy lehet benne NULL:
(persze, ha beállítok egy alapértelmezett életkort NULL akkor lefut)
8

Ez igaz,

Pepita · 2017. Dec. 13. (Sze), 14.33
viszont ha nullable lenne, akkor ez lefutna:
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.
6

Struktúra?

Pepita · 2017. Dec. 10. (V), 14.11
Sokat segítene, ha valódi struktúra dump-ot láthatnánk (kódszínezővel).
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 pl DEFAULT 0, mert ha NOT NULL, akkor a default sem lehet NULL. Szóval a jó megoldás leginkább attól függ, hogy pontosan mit szeretnél.