MySQL server can set different SQL modes as per requirements using ‘sql_mode’ system variable, below is default mode in 5.7 version
mysql> show variables like ‘sql_mode’;
+—————+———————————————————————————————————-+
| Variable_name | Value |
+—————+————————————————————————————————————+
| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+—————+————————————————————————————————————+
mysql> show variables like ‘sql_mode’;
+—————+———————————————————————————————————-+
| Variable_name | Value |
+—————+————————————————————————————————————+
| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+—————+————————————————————————————————————+
There are couple of methods to modify or set sql_mode
– At server startup using –sql-mode=”modes”
– At database level using
SET GLOBAL sql_mode = ‘modes’; — This needs to performed using user having super privileges and will affect all users
SET SESSION sql_mode = ‘modes’;— only affect current user
– At server startup using –sql-mode=”modes”
– At database level using
SET GLOBAL sql_mode = ‘modes’; — This needs to performed using user having super privileges and will affect all users
SET SESSION sql_mode = ‘modes’;— only affect current user
To check whether its global level or session level
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;