Tabelle akzeptiert leere Werte trotz NOT NULL-Definition

daggermph

Neuer Benutzer
Beiträge
2
Hallo,
ich bin ziemlicher Anfänger in dem Bereich und stolper über Folgendes:
ich habe eine Tabelle "sortiment" erstellt und die vier Spalten jeweils mit NOT NULL (bzw. als Primary Key) definiert.
Nun wollte ich probehalber unvollständige Datensätze eintragen und stelle fest:
Es werden fehlende Eingaben akzeptiert, die Felder bleiben stehts leer (also auch kein NULL)
Die Inserts trage ich folgendermaßen ein:

INSERT INTO sortiment
(sortiment_anzahl)
VALUES
(10);

Ich lasse folglich vieles weg um eine Fehlermeldung zu triggern. Geschieht aber nicht, es wird alles mögliche eingetragen, auch leere Felder oder 0.00.
Wie kann das sein? Die Literatur besteht auf eine Fehlermeldung und an einem anderen Rechner ist dieses auch bereits geschehen.
Gibt es irgendwo Einstellungen wo man sowas umstellen kann? Nutze MySQL/MariaDB mit XAMPP und MariaDB hat die Version 10.4.28

Der Befehl zur Tabellenerstellung ist:

CREATE TABLE sortiment
(
sortiment_Artikel_ID INT PRIMARY KEY AUTO_INCREMENT,
sortiment_produkttyp VARCHAR(20) NOT NULL,
sortiment_preis DECIMAL (7,2) NOT NULL,
sortiment_anzahl INT UNSIGNED NOT NULL
);

Hoffe auf hilfereiche Anregungen. Danke!
 

Anhänge

  • notnullproblem.JPG
    notnullproblem.JPG
    54,4 KB · Aufrufe: 3
Werbung:
Gibt es irgendwo Einstellungen wo man sowas umstellen kann? Nutze MySQL/MariaDB mit XAMPP und MariaDB hat die Version 10.4.28
Maria / mysql sind nicht besonders gut darin, constraints einzuhalten. Das ist eigentlich ein (schlechter) Witz, weil es eine der Kernfunktionen einer DB ist.
Du könntest versuchen, die jüngste DB Version zu verwenden oder die sql Modes durchzusehen, um das normale Constraint Verhalten zu erzwingen. Moderne maria / mysql können das vielleicht, weiß ich nicht genau. Häufig werden sie jedoch in einer "Grundkonfiguration" installiert, die eher rückwärtskompatibel zu altem Schrott ist und größtmögliche Kompatibilität zu altem Code liefert, der immernoch im Internet rumfliegt.
Ich kann Dir dazu keine Details nennen, wie und ob es doch geht. Wegen solcher Bugs habe ich mysql noch nie genutzt. Hier gibt es aber mysql Kenner, vielleicht können die weiter helfen.
Nimm lieber gleich eine DB, die sich an die Spielregeln und Standards hält.
 
Werbung:
Gut, ich hatte sowas im Hinterkopf, aber ich weiß nicht genau, ab welchen Versionen das geht.
Für sowas:
sortiment_produkttyp VARCHAR(20) NOT NULL,
könnte man auch gut das Modell ändern und eine separate Tabelle für Produkttyp anlegen. Dann wird aus dem Textfeld mit Constraint ein Foreign Key Constraint auf Integerbasis oder so. Foreign Keys sollte mysql / maria besser können.
 
Zurück
Oben