STRICT_TRANS_TABLES

Bei den aktuellen Datenbank-Servern ist immer der Modus „STRICT_TRANS_TABLES“ aktiv.

Dies bedeutet für Sie, daß MySQL/MariaDB fehlerhafte Datenbankeingaben mit einer Fehlermeldung quittieren.  Konnte man früher in ein Feld des Typs INT einen Wert von ‚355a2‘ (die Datenbank hat daraus dann 355 gemacht und das a2 weggeworfen), oder das Datum 30.2.2020 in das Datumsfeld einfügen, so verweigern aktuelle Versionen korrekterweise die Query.

Die Lösung ist relativ einfach. Passen Sie Ihre Query so an, daß nur korrekte Eingaben in der Datenbank landen. Dazu gehört auch die Angabe der korrekten Felder, denn es macht keinen Sinn, fünf Werte in die Datenbank schreiben zu wollen, aber nur vier Felder anzugeben.

Übergangsweise kann der Modus für die einzelne Session ausgeschaltet werden.

Um diese Modi für die Datenbank-Verbindung einer PHP-Anwendung zu setzen, verwendet man im PHP-Code eine Zeile wie diese, wobei $con eine von PDO oder mysqli aufgebaute Datenbank-Verbindung repräsentiert:

$con->exec( 'SET sql_mode = "ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION"' );

Related Articles