我正在使用MariaDB MEMORY引擎。我在max_heap_table_size
中定义了my.cnf
,重新启动了数据库服务。现在,我运行迁移并获得:django.db.utils.ProgrammingError: Storage engine MEMORY doesn't support BLOB/TEXT columns
我的错误模型是:
class Department(models.Model):
name = models.CharField(max_length=100)
tag = models.CharField(max_length=10)
dtype = models.PositiveSmallIntegerField()
info = models.CharField(max_length=64000)
虽然,最大
VARCHAR
是65535.这是什么问题? 最佳答案
由于文档状态here,65.535
实际上是字节,如果使用UTF-8
,则最多可包含21.844个字符。
可变长度的字符串。 M代表最大列长
字符。 M的范围是0到65,535。有效最大值
VARCHAR的长度受最大行大小(65,535字节,
在所有列之间共享)和使用的字符集。对于
例如,utf8字符每个字符最多需要三个字节,
因此可以声明使用utf8字符集的VARCHAR列
最多21844个字符。
由于Django模型中max_length
的CharField
以字符而不是字节指定长度,因此我认为这是导致错误的原因。
关于python - Django内存数据库模型创建失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30787677/