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ž:

  1. neobsahuje hodnotu pro uvedený sloupec
  2. 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.

Leave a reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..