sql_mode
WARNING
Rule IDs: sec_007
Overview
- Purpose
- Documented in the MySQL 8.4 manual as a server system variable (scope: Both). Purpose and semantics are described at the linked manual page.
- Dynamic (MySQL 8.4 reference)
- MySQL 8.4 marks this variable as dynamic (
Dynamic= Yes). Runtime changes useSET GLOBAL(global scope) orSET SESSION(session scope) — confirm syntax and persistence (SET PERSIST) in the manual. - Default value
- ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_ENGINE_SUBSTITUTION (MySQL 8.4)
- Version and product notes
- MariaDB and Percona Server may use different names, defaults, or dynamic behavior; verify their documentation.
- Documentation
- https://dev.mysql.com/doc/refman/8.4/en/server-options.html#option_mysqld_sql-mode
- Other vendors
What is checked
Rules that reference this variable, with their severity and what each rule detects:
- WARNING
sec_007: Include STRICT_TRANS_TABLES in sql_mode to catch data integrity issues early.
Tuning guidance
- Recommended actions:
- Include STRICT_TRANS_TABLES in sql_mode to catch data integrity issues early.
- Trade-offs: Security settings protect against unauthorized access and data exposure. Tighter settings may require application changes (e.g., SSL certificates for require_secure_transport, IP-based grants for skip_name_resolve).
Example
Consult the manual for whether SET GLOBAL, SET PERSIST, or SET SESSION applies.