ilch Forum » Allgemein » HTML, PHP, SQL,... » MySQL-Fehler 1364 bei INSERT INTO

Geschlossen
  1. #1
    User Pic
    Outi77 Mitglied
    Registriert seit
    31.03.2013
    Beiträge
    1.337
    Beitragswertungen
    143 Beitragspunkte
    Hallo zusammen,

    seit heute (zumindest ist es mir seit heute bekannt), kommt beim Befüllen einer Datenbank-Tabelle eine Fehlermeldung, wenn ich nicht alle Spalten dieser Tabelle im INSERT-Befehl aufzähle. Heißt, ich möchte von den 9 Spalten der Tabelle erstmal nur 4 befüllen. Der Fehler:
    1364 : Field 'match_id' doesn't have a default value
    Jetzt meine Frage: muss ich denn wirklich jedes Feld/jede Spalte erwähnen? Die bemängelte Spalte ist von Attribute her unsigned, sprich ohne negative Werte. Könnte es damit zusammenhängen?
    Außerdem werden außer der Spalte match_id noch weitere 4 Spalten auch nicht beschrieben, aber nicht bemängelt...komisch das alles.
    Wie muß denn jetzt der korrekte Weg aussehen, um die Fehlermeldung loszuwerden?
    Ich habe eben einen Versuch mit INSERT IGNORE INTO unternommen, da klappt es. Gefällt mir nur nicht wirklich diese Lösung...

    Grüße in die Runde Victory

    Nachtrag: die anderen Spalten werden auch bemängelt, wenn ich der einen Spalte einen Standard-Wert verpasse...


    Zuletzt modifiziert von Outi77 am 31.10.2019 - 13:32:07
    Die richtige Formulierung eines Problems ist nicht selten bereits die halbe Lösung.
    »Albert Einstein«
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Wenn es keinen default value für einen Spalte gibt muss diese ausgefüllt werden
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Das wird wohl daran liegen, dass du nun MySQL 5.7 einsetzt, wo sich mehrere Standardeinstellungen geändert haben. Unter anderem wurde STRICT_TRANS_TABLES standardmäßig als sql mode hinzugefügt.

    Dadurch werden Spalten, die keinen Standardwert haben und keinen Wert beim anlegen gesetzt haben, als Fehler gesehen.

    Als möglichen Fehlerbehebung gibt es mehrere Möglichkeiten:
    1. (bevorzugt) Gehe alle deine Datenbanktabellen durch (oder teste dich durch die Seite) und gib allen Spalten die eben nicht immer geschrieben werden einen Standardwert, der dann gesetzt wird, wenn man nicht explizit etwas angegeben hat. Das kann auch ein leerer String oder 0 für Zahlen sein, um das alte Verhalten beizubehalten.
    2. Verändere den sql_mode und entferne STRICT_TRANS_TABLE, entweder
    a) in der my.cnf deiner MySQL Installation
    b) beim Aufbau der Verbindung, wie hier github.com/IlchCMS/Ilch-1.1/blob/1.1q/include/includes/func/db/mysqli.php#L36


    Zuletzt modifiziert von Mairu am 01.11.2019 - 07:57:52
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Outi77 Mitglied
    Registriert seit
    31.03.2013
    Beiträge
    1.337
    Beitragswertungen
    143 Beitragspunkte
    Moin,

    vielen Dank Euch beiden! Ich habe die Standard-Werte in den Spalten gesetzt.

    Grüße...
    Die richtige Formulierung eines Problems ist nicht selten bereits die halbe Lösung.
    »Albert Einstein«
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten