Saya baru saja mengobrol dengan google dan semuanya berfungsi untuk instance kami!
Cara standar agar utf8mb4 bekerja di Django adalah dengan menetapkannya sebagai DATABASES['default']['OPTIONS'] di settings.py, seperti ini:
'OPTIONS': {'charset': 'utf8mb4'},
Ini menyebabkan OperationalError di App Engine, di MySQLdb 1.2.4b4 / 1.2.4 / 1.2.5; yang tampaknya berarti bahwa klien MySQL C yang dikompilasi oleh google tidak memiliki set karakter utf8mb4.
Hapus setelan OPTIONS ini.
Solusinya adalah memanggil SET NAMES secara manual; edit lib/django/db/backends/mysql/base.py dan tambahkan baris conn.query("SET NAMES utf8mb4") ke dalam DatabaseWrapper.get_new_connection, sehingga terlihat seperti ini:
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
Pastikan Anda juga mengaktifkan utf8mb4 di backend. Perintah migrasi dalam tutorial App Engine Django menghasilkan instance Cloud SQL yang dikonfigurasi untuk utf8. Saya perlu menjalankan perintah ini untuk mengaktifkan utf8mb4 pada dua tabel:
ALTER TABLE polls_question CONVERT TO CHARACTER SET utf8mb4;
ALTER TABLE polls_choice CONVERT TO CHARACTER SET utf8mb4;