即使所有表都有CHARSET = utf8mb4后,Python manage.py inspectdb也会出现以下错误:COLLATE = utf8mb4_general_ci
来自django.db导入模型
我最近遇到了完全相同的问题。我向Django提出了一个bug请求,但是Django不接受它作为他们的bug。
MySQL 8已从UTF8MB3切换为UTF8MB4作为默认字符集。从8.0.11开始,如果您访问使用以前版本创建的表,则会返回警告,鼓励您切换到UTF8MB4。
当您运行inspectdb时,INFORMATION_SCHEMA表仍然是UTF8MB3,因此您将获得返回Django的警告,Django目前无法忽略该警告。
我有一个完整的例子,说明如何在Django错误票上解决这个错误:https://code.djangoproject.com/ticket/29678
我已经能够完全使用MySQL 8.0.12作为强大的Django应用程序的后端,所以一旦你解决了这个问题,你应该没问题。