MySQL 5.7 to 8.0: Default Character Set Becomes utf8mb4
Why new tables and databases created without an explicit CHARSET clause get a different default character set on MySQL 8.0 than on 5.7.
MySQL 5.7 → MySQL 8.0
Quick answer
MySQL 8.0's server default character set is utf8mb4 (with utf8mb4_0900_ai_ci collation); MySQL 5.7's default was latin1. Any CREATE TABLE/DATABASE statement that omits an explicit CHARACTER SET clause gets a different result depending on which server version created it.
Why it matters
This mostly helps — utf8mb4 correctly stores full Unicode (including emoji) where latin1 cannot — but it means schema dumps, migration scripts, and ORMs that don't pin an explicit charset can produce tables with different encodings depending on when/where they were created, which complicates later consolidation.
What to do about it
Migration steps
- Always specify CHARACTER SET and COLLATE explicitly in CREATE TABLE/DATABASE statements rather than relying on the server default, regardless of MySQL version.
- Before upgrading, audit existing latin1 tables that hold non-ASCII data and plan an explicit conversion (ALTER TABLE ... CONVERT TO CHARACTER SET utf8mb4) rather than assuming the server upgrade changes existing table data.
References
- MySQL 8.0 Reference Manual — Character Set Configuration (v8.0) — checked 2026-07-31
- MySQL 8.0 Reference Manual — Changes Affecting Upgrades to MySQL 8.0 (v8.0) — checked 2026-07-31
Last verified 2026-07-31.