Ich benutze django 1.8.9 und MySQL 5.7.17. Ich habe eine folgende Tabelle:Aktualisierung Mysql JSON Feld
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| brand | varchar(255) | YES | MUL | NULL | |
| new_info | json | YES | | NULL | |
| keywords | json | YES | | NULL | |
| notes | varchar(255) | YES | | NULL | |
| id | mediumint(9) | NO | MUL | NULL | auto_increment |
+----------+--------------+------+-----+---------+----------------+
In django Ich habe dieses Modell (JSONField
von django_mysql ist):
class info_by_kw(Model):
brand = ForeignKey(Brand, on_delete=CASCADE, db_column='brand')
# new_info = JSONField(blank=True, null=True)
keywords = JSONField(blank=True, null=True)
notes = CharField(max_length=255, blank=True, null=True)
Wenn die Daten gespeichert ich eine sehr sinnvolle Fehlermeldung erhalten: (-1, "Fehler total whack"). Wie auch immer, es endet in der folgenden SQL-Anweisung auf:
UPDATE `products_info_by_kw` SET `brand` = _binary'BINGO!', `keywords` = _binary'[[\\"Tomato\\", \\"Madness\\"]]', `notes` = _binary'' WHERE `products_info_by_kw`.`id` = 48;
Mit dem mehr oder weniger erwartete Ergebnis:
ERROR 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'.
Kurz Suche gab dieses Ergebnis: https://code.djangoproject.com/ticket/26140, so vielleicht ist es ein Richtige zu tun und Mein MySQL (oder Django) ist falsch konfiguriert. Hat jemand eine Idee, wie man es reparieren kann?
jango unterstützt keine Art von JSON-Feld nativ in 1.8 und unterstützt nicht mysql Json sogar in 1.10 – e4c5
@ e4c5, was meinst du mit "nativ"? Sie behaupten, sie tun, sie haben dieses Feld (http://django-mysql.readthedocs.io/en/latest/model_fields/json_field.html), der Code (schaut in atm :)). – Pooh
das ist ein Drittanbieter-Plugin. Wenn Sie das verwenden. Aktualisieren Sie Ihre Frage, um diese Tatsache anzuzeigen. – e4c5