MariaDB/MySQL: Nelze vložit záznam kvůli chybě „Field column_name doesn’t have a default value“ nebo „Incorrect time value: ““? Vypněte STRICT_TRANS_TABLES
Pokud databázový server MariaDB nebo MySQL nedovolí vložit nový záznam do tabulky kvůli chybě „Field ‚column_name‘ doesn’t have a default value“ (Error 1364), znamená to, že máte nastavený přísný režim SQL (STRICT_TRANS_TABLES).
Váš SQL dotaz totiž:
- neobsahuje hodnotu pro uvedený sloupec
- a sloupec nemá nastavenou výchozí hodnotu
Databázový server takovou situaci považuje za chybějící data a SQL přeruší.
Měli byste vědět, že přísný režim také hlídá SQL dotazy z neplatnými daty. Pokud se pokusíte do sloupce datového typu integer uložit například textový řetězec místo čísla, SQL dotaz se přeruší s následující chybovou hláškou: „Incorrect integer value: ‚abc‘ for column ‚show‘ at row 1“ (Error 1366).
Jak vypnout přísný režim SQL?
Pokud na přísný režim SQL není vaše aplikace připravená, tak jej můžete vypnout.
V konfiguračním souboru databázového serveru MariaDB/MySQL:
/data/my.ini
najděte řádek sql_mode a odstraňte z něj položku STRICT_TRANS_TABLES.
V případě MariaDB 10.1 tak následující řádek:
sql_mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
upravte takto:
sql_mode="NO_ENGINE_SUBSTITUTION"
Více o přísném režimu SQL se dočtete v dokumentaci na MariaDB nebo MySQL.