Jeg chattede lige med google og fik alt til at fungere for vores instans!
Standardmetoden til at få utf8mb4 til at fungere i Django er at angive den som DATABASES['default']['OPTIONS'] i settings.py, sådan her:
'OPTIONS': {'charset': 'utf8mb4'},
Dette forårsager en Operational Error i App Engine på MySQLdb 1.2.4b4 / 1.2.4 / 1.2.5; hvilket tilsyneladende betyder, at MySQL C-klienten google kompilerer imod mangler utf8mb4-tegnsættet.
Fjern denne indstilling for OPTIONS.
Løsningen er manuelt at kalde SET NAMES; rediger lib/django/db/backends/mysql/base.py og tilføj en conn.query("SET NAMES utf8mb4") linje i DatabaseWrapper.get_new_connection, så det ser sådan ud:
def get_new_connection(self, conn_params):
conn = Database.connect(**conn_params)
conn.encoders[SafeText] = conn.encoders[six.text_type]
conn.encoders[SafeBytes] = conn.encoders[bytes]
conn.query("SET NAMES utf8mb4")
return conn
Sørg for, at du også har utf8mb4 aktiveret på backend. Migreringskommandoerne i App Engine Django-selvstudiet resulterer i en Cloud SQL-instans konfigureret til utf8. Jeg var nødt til at køre disse kommandoer for at aktivere utf8mb4 på de to tabeller:
ALTER TABLE polls_question CONVERT TO CHARACTER SET utf8mb4;
ALTER TABLE polls_choice CONVERT TO CHARACTER SET utf8mb4;