This article brings you relevant knowledge about mysql. It mainly talks about the various modes of sql_mode. Friends who are interested can take a look below. I hope it will be helpful to everyone.
Introduction to each mode of sql_mode
View sql_mode
mysql> SHOW VARIABLES LIKE 'sql_mode'; +---------------+--------------------------------------------+ | Variable_name | Value | +---------------+--------------------------------------------+ | sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | +---------------+--------------------------------------------+ 1 row in set (0.16 sec)
STRICT_TRANS_TABLES
When inserting or updating data, if the value of a field cannot be converted to the target data type, MySQL will report an error. This mode only applies to transaction tables.
So the inconsistency of this mode will cause the same code to report errors in different environments
This mode is only for innodb tables
STRICT_ALL_TABLES
with STRICT_TRANS_TABLES is similar, but this mode applies to all tables, including non-innodb tables.
ERROR_FOR_DIVISION_BY_ZERO
MySQL will throw an error if the divider is zero. If this mode is not enabled, MySQL returns NULL.
NO_AUTO_CREATE_USER
When MySQL uses the GRANT statement to create a new user, the creation of non-existing users is not allowed. If you enable this mode, you must first create the user manually.
NO_ENGINE_SUBSTITUTION
If the specified storage engine does not exist, MySQL will not replace it with another storage engine, but will report an error.
ANSI_QUOTES
When this mode is enabled, MySQL treats double quotes as quotes for identifiers rather than quotes for strings.
IGNORE_SPACE
If this mode is enabled, MySQL ignores spaces in SQL statements. This can beautify the SQL statement without changing the structure of the SQL statement.
ONLY_FULL_GROUP_BY
If this mode is enabled, all non-aggregated columns must be included in the GROUP BY statement, otherwise MySQL will report an error.
NO_ZERO_IN_DATE
If this mode is enabled, MySQL does not allow zero values in dates or times.
NO_ZERO_DATE
If this mode is enabled, MySQL does not allow the use of "0000-00-00" dates.
Recommended learning: "MySQL Video Tutorial"
The above is the detailed content of Let's talk about the various modes of sql_mode. For more information, please follow other related articles on the PHP Chinese website!