YEAR wird mit 0000 statt NULL gefüllt

suntrop

Erfahrenes Mitglied
Ich habe drei Felder die als year(4) mit Standard NULL notiert sind.
Jetzt hatte ich eine CSV eingelesen und dort wo keine Jahre in der CSV standen, steht jetzt immer 0000. Warum hat phpMyAdmin beim Import dort nicht NULL reingeschrieben?
Kann ich ein Feld vom Typ „year“ auch leer lassen, sodass gar nichts drin steht – weder 0000 noch NULL? Oder ist es besser leere Felde mit NULL zu befüllen?
 
http://www.tutorials.de/forum/relat...nksystem-bei-den-fragen-im-titel-angeben.html
Ich geh jetzt mal davon aus, dass du mit MySQL arebitest, da du vom phpMyAdmin schreibst.


Hast du dem Feld ein NULL-Value erlaubt?

noch zu deiner Info:
YEAR[(2|4)]

Ein Jahr im zwei- oder vierstelligen Format. Das vierstellige Format ist standardmäßig voreingestellt. In diesem Format sind zulässige Werte der Bereich zwischen 1901 und 2155 sowie 0000. Im zweistelligen Format ist der Bereich 70 bis 69 zulässig; er bezeichnet die Jahre 1970 bis 2069. MySQL zeigt YEAR-Werte im Format YYYY an, gestattet Ihnen aber, wahlweise Strings oder Zahlen in YEAR-Spalten einzugeben.
 
Danke für den Hinweis, hatte ich nicht mehr dran gedacht, die DB in den Titel zu schreiben.

Ja, das Feld hat Null 'Ja' und als Standard NULL. Wenn ich in phpMyAdmin einen neuen Satz abspeicher und das Häckchen für NULL setze, dann klappts auch. Nur beim Import geht es leider nicht.
 
Wenn eine Spalte NULL als Wert haben darf, heisst das nicht, dass bei unzulässigen Werten die Spalte auf NULL gesetzt wird.

Wenn eine Spalte NULL sein soll, musst du dies entweder genauso angeben wie jeden anderen Wert auch, oder aber, du übergehst die Spalte...in deinem Fall würde NULL dann als default greifen.

Was bei fehlerhaften Daten eingefügt wird, wie in deinem Fall(Nichts ist nicht dasselbe wie NULL), hängt vom Spaltentyp ab, und bei YEAR ist dies:
MySQL-Referenzhandbuch (C) 2002 hat gesagt.:
Unzulässige YEAR-Werte werden in 0000 umgewandelt.
 
oder aber, du übergehst die Spalte...in deinem Fall würde NULL dann als default greifen.
Bei einer CSV-Datei geht es dann nicht, richtig? Denn hier muss ja die Reihenfolge der Felder exakt eingehalten werden – zumindest bei phpMyAdmin. Dann muss ich NULL in die CSV schreiben … hmm, muss mir ne schicke RegEx dafür aus den Fingern saugen :-)

Danke für deine Hilfe!
 
Hier etwas möglicherweise hilfreiches aus dem Manual:

MySQL-Referenzhandbuch (C) 2002 hat gesagt.:
Wenn Sie Daten mit LOAD DATA INFILE einlesen, werden leere Spalten mit '' aktualisiert. Wenn Sie einen NULL-Wert in einer Spalte haben wollen, müssen Sie in der Textdatei \N benutzen. Unter manchen Umständen kann auch das Literalwort 'NULL' benutzt werden. See LOAD DATA.
 
Zurück