我正在使用 django 1.8.9 和 MySQL 5.7.17。我有一个下表:
+----------+--------------+------+-----+---------+----------------+
| 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 |
+----------+--------------+------+-----+---------+----------------+
在 django 我有这个模型(JSONField
来自 django_mysql):
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)
保存数据后,我得到一个非常有意义的错误:(-1,“错误完全重击”)。无论如何,它最终会出现在以下 SQL 语句中:
UPDATE `products_info_by_kw` SET `brand` = _binary'BINGO!', `keywords` = _binary'[[\\"Tomato\\", \\"Madness\\"]]', `notes` = _binary'' WHERE `products_info_by_kw`.`id` = 48;
或多或少的预期结果:
ERROR 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'.
简短的搜索给出了这个结果:https ://code.djangoproject.com/ticket/26140 ,所以也许这是正确的做法,我的 mysql(或 django)配置错误。有谁知道如何解决它?