To guard against ignored typos and syntax errors in SQL, or other
unintended consequences of various combinations of operational
modes and SQL commands, the InnoDB Plugin provides a
“strict mode” of operations. In this mode, InnoDB
will raise error
conditions in certain cases, rather than issue a warning and
process the specified command (perhaps with some unintended
defaults). This is analogous to MySQL’s sql_mode,
which controls
what SQL syntax MySQL will accept, and determines whether it will
silently ignore errors, or validate input syntax and data values.
Note that there is no strict mode with the built-in InnoDB, so
some commands that execute without errors with the built-in
InnoDB will generate errors with the InnoDB Plugin, unless you
disable strict mode.
In the InnoDB Plugin, the setting of InnoDB strict
mode affects the handling of syntax errors on the CREATE TABLE,
ALTER TABLE and CREATE INDEX commands. Starting with
InnoDB Plugin version 1.0.2, the strict mode also enables a
record size check, so that an INSERT or
UPDATE will never fail due to the record
being too large for the selected page size.
Using the new clauses and settings for ROW_FORMAT and
KEY_BLOCK_SIZE on CREATE TABLE and
ALTER TABLE commands and the
CREATE INDEX can be confusing when not running
in strict mode. Unless
you run in strict mode, InnoDB will ignore certain syntax errors
and will create the table or index, with only a warning in the
message log. However if InnoDB strict mode is on, such errors
will generate an immediate error and the table or index will not
be created, thus saving time by catching the error at the time the
command is issued.
The default for strict mode is off, but in the future, the default may be changed. It is best to start using strict mode with the InnoDB Plugin, and make sure your SQL scripts use commands that do not generate warnings or unintended effects.
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 (Unix
operating systems) or
my.ini (Windows). You can also enable or disable
InnoDB strict
mode at runtime with the command SET [GLOBAL|SESSION]
innodb_strict_mode=,
where mode is either
modeON 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,
which affects only that client.
This is the User’s Guide for InnoDB Plugin 1.0.6 for MySQL 5.1, generated on March 4, 2010 (rev 673:680M).
