InnoDB
Strict Mode
To guard against ignored typos and syntax errors in SQL, or other unintended consequences of various combinations of operational modes and SQL statements, InnoDB provides a strict mode of operations. In this mode, InnoDB raises error conditions in certain cases, rather than issuing a warning and processing the specified statement (perhaps with unintended behavior). This is analogous to sql_mode
in MySQL, which controls what SQL syntax MariaDB accepts, and determines whether it silently ignores errors, or validates input syntax and data values. Since strict mode is relatively new, some statements that execute without errors with earlier versions of MariaDB might generate errors unless you disable strict mode.
The setting of InnoDB strict mode affects the handling of syntax errors on the CREATE TABLE
, ALTER TABLE
and CREATE INDEX
statements. The strict mode also enables a record size check, so that an INSERT
or UPDATE
never fails due to the record being too large for the selected page size.
We recommend running in strict mode when using the ROW_FORMAT
and KEY_BLOCK_SIZE
clauses on CREATE TABLE
, ALTER TABLE
, and CREATE INDEX
statements. Without strict mode, InnoDB ignores conflicting clauses and creates the table or index, with only a warning in the message log. The resulting table might have different behavior than you intended, such as having no compression when you tried to create a compressed table. When InnoDB strict mode is on, such problems generate an immediate error and the table or index is not created, avoiding a troubleshooting session later.
InnoDB strict mode is set with the configuration parameter innodb_strict_mode
, which can be specified as on
or off
. You can set the value on the command line when you start mysqld
, or in the configuration file my.cnf
or my.ini
. You can also enable or disable InnoDB strict mode at run time with the statement SET [GLOBAL|SESSION] innodb_strict_mode=
, where mode
is either mode
ON
or OFF
. Changing the GLOBAL
setting requires the SUPER
privilege and affects the operation of all clients that subsequently connect. Any client can change the SESSION
setting for innodb_strict_mode
, and the setting affects only that client.