Jag chattade precis med google och fick allt att fungera för vår instans!
Standardsättet för att få utf8mb4 att fungera i Django är att ange det som DATABASER['default']['OPTIONS'] i settings.py, så här:
'OPTIONS': {'charset': 'utf8mb4'},
Detta orsakar ett Operational Error i App Engine, på MySQLdb 1.2.4b4 / 1.2.4 / 1.2.5; vilket tydligen betyder att MySQL C-klienten google kompilerar mot saknar teckenuppsättningen utf8mb4.
Ta bort den här OPTIONS-inställningen.
Lösningen är att manuellt anropa SET NAMES; redigera lib/django/db/backends/mysql/base.py och lägg till en conn.query("SET NAMES utf8mb4") rad i DatabaseWrapper.get_new_connection, så det ser ut så här:
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
Se till att du även har utf8mb4 aktiverat på backend. Migreringskommandona i App Engine Django-handledningen resulterar i en Cloud SQL-instans konfigurerad för utf8. Jag behövde köra dessa kommandon för att aktivera utf8mb4 på de två tabellerna:
ALTER TABLE polls_question CONVERT TO CHARACTER SET utf8mb4;
ALTER TABLE polls_choice CONVERT TO CHARACTER SET utf8mb4;