In the MySQL team, we’ve observed that having a large number of possible SQL modes creates confusion amongst users. For example, if you follow my advice on ‘recommended defaults for new applications’, it is:
sql-mode="STRICT_TRANS_TABLES,
ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,
NO_AUTO_VALUE_ON_ZERO,
NO_ENGINE_SUBSTITUTION,
NO_ZERO_DATE,
NO_ZERO_IN_DATE,
ONLY_FULL_GROUP_BY"
This is quite specific, and may be too much to expect of a novice user to set in configuration.
One proposal we are putting forward to address this is to simply reduce the number of options that are available. Namely:
- Remove the options
ERROR_FOR_DIVISION_BY_ZERO
,NO_ZERO_DATE
andNO_ZERO_IN_DATE
. - Have these behaviours be enabled when turning on the …