[Solved]-Django + MySQL – Unknown encoding: utf8mb4

18👍

https://code.djangoproject.com/ticket/18392#comment:10

As a workaround, you can make python understand ‘utf8mb4’ as an alias
for ‘utf8’:

import codecs
codecs.register(lambda name: codecs.lookup('utf8') if name == 'utf8mb4' else None)

11👍

If you really need utf8mb4,
follow the steps in https://mathiasbynens.be/notes/mysql-utf8mb4, and
make sure your python package “MySQL-python” version is >= 1.2.5 !

0👍

Fast and easy way.

connection = mysql.connector.connect(user='username',
                                   password='mypass',
                                    host='localhost',
                                     database='mydb',
                                       use_pure=True,
                                      charset='utf8'
                                      )
👤Meikel

-1👍

This worked in my case (MySQL 5.7 + Django 3.1):

Configure Django:

'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
 'charset': 'utf8mb4' 
}

Configure MySQL database

  1. make sure all db tables are using InnoDB storage engine (this is important; the next step will probably fail if you skip it)
  2. change the Collation for all your tables to utf8mb4_general_ci

Leave a comment