В более новых версиях MySQL / MariaDB строгий обычно устанавливается по умолчанию, например,
Стандартный режим SQL в MySQL 8.0 включает следующие режимы: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO и NO_ENGINE_SUBSTITUTION.
https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html*1009*
В частности, STRICT_TRANS_TABLES может привести к ошибке (или STRICT) в случае ошибки (или STRIC_) вставляется или изменяется для столбцов, отличных от NULL, которые не содержат явного значения.
Значение отсутствует, если новая вставляемая строка не содержит значения для столбца, не являющегося NULL, который имеет в его определении нет явного предложения DEFAULT.
Это может привести к ошибке:
SQL error: 'Field 'fieldname' doesn't have a default value' (tt_content:NEW5e57781975ff4380496484)
Или, например, если вставленное значение имеет неверный тип данных, например, вставка строки '' для целочисленного поля.
Это может привести к ошибке:
SQL error: 'Incorrect integer value: '' for column `databasename`.`tablename`.`fieldname` at row 1' (sys_category:NEW5e8194a0cdd6b210822798)
Этого обычно можно избежать, если t по умолчанию он правильно установлен в TCA.
Итак, когда это необходимо (например, для каких типов данных) и как правильно его настроить?