我正在使用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.这是什么问题?

最佳答案

由于文档状态here65.535实际上是字节,如果使用UTF-8,则最多可包含21.844个字符。


  可变长度的字符串。 M代表最大列长
  字符。 M的范围是0到65,535。有效最大值
  VARCHAR的长度受最大行大小(65,535字节,
  在所有列之间共享)和使用的字符集。对于
  例如,utf8字符每个字符最多需要三个字节,
  因此可以声明使用utf8字符集的VARCHAR列
  最多21844个字符。


由于Django模型中max_lengthCharField以字符而不是字节指定长度,因此我认为这是导致错误的原因。

关于python - Django内存数据库模型创建失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30787677/

10-10 17:17