Skip to content

Instantly share code, notes, and snippets.

@dschneider
Created May 7, 2014 14:44
Show Gist options
  • Save dschneider/dc914b37c66dbf76a16b to your computer and use it in GitHub Desktop.
Save dschneider/dc914b37c66dbf76a16b to your computer and use it in GitHub Desktop.
How to easily convert utf8 tables to utf8mb4 in MySQL 5.5
# For each database:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
# For each table:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# For each column:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# (Don’t blindly copy-paste this! The exact statement depends on the column type, maximum length, and other properties. The above line is just an example for a `VARCHAR` column.)
@3manuek
Copy link

3manuek commented Jun 13, 2017

Something like that will be for by-column conversion:

select CONCAT('ALTER TABLE `', TABLE_SCHEMA, '.', TABLE_NAME,'` CHANGE ',COLUMN_NAME,' ', COLUMN_NAME, ' ', DATA_TYPE,'(',CHARACTER_MAXIMUM_LENGTH,') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;') as column_alter from COLUMNS WHERE DATA_TYPE = 'varchar' AND TABLE_SCHEMA = '<YOUR_DATABASE>'

@MrCsabaToth
Copy link

@3manuek If I convert the table, will it convert all the columns as well to utf8mb4?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment