私はちょうどグーグルとチャットして、私たちのインスタンスのためにすべてが機能するようになりました!
Djangoでutf8mb4を機能させる標準的な方法は、settings.pyでDATABASES['default']['OPTIONS']として次のように指定することです。
'OPTIONS': {'charset': 'utf8mb4'},
これにより、MySQLdb 1.2.4b4 / 1.2.4/1.2.5のAppEngineでOperationalErrorが発生します。これは明らかに、GoogleがコンパイルしているMySQLCクライアントにutf8mb4文字セットがないことを意味します。
このOPTIONS設定を削除します。
回避策は、SETNAMESを手動で呼び出すことです。 lib / django / db / backends / mysql / base.pyを編集し、conn.query( "SET NAMES utf8mb4")行をDatabaseWrapper.get_new_connectionに追加すると、次のようになります。
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
バックエンドでutf8mb4も有効になっていることを確認してください。 App Engine Djangoチュートリアルの移行コマンドにより、utf8用に構成されたCloudSQLインスタンスが作成されます。 2つのテーブルでutf8mb4を有効にするには、次のコマンドを実行する必要がありました。
ALTER TABLE polls_question CONVERT TO CHARACTER SET utf8mb4;
ALTER TABLE polls_choice CONVERT TO CHARACTER SET utf8mb4;