【问题标题】:Django & Postgres - Index Row Size Exceeds btree version 4 maximumDjango & Postgres - 索引行大小超过 btree 版本 4 最大值
【发布时间】:2020-07-31 03:04:38
【问题描述】:

我在Django 中定义了以下内容,以便以纯文本 PEM 格式存储 SSL 证书:

class Certificate(models.Model):
    pem = models.CharField(max_length=4096, unique=True, blank=False, null=False)

Postgres 中填充表列时,我看到此错误,表示数据的大小对于 b-tree 索引来说太大:

django.db.utils.OperationalError: index row size 2720 exceeds btree version 4 maximum 2704 for index "app_certificate_pem_key"
DETAIL:  Index row references tuple (1,6) in relation "app_certificate".
HINT:  Values larger than 1/3 of a buffer page cannot be indexed.
Consider a function index of an MD5 hash of the value, or use full text indexing.

是否有一种“Django”方法可以根据我的 pem 列的哈希创建唯一索引?

【问题讨论】:

    标签: django postgresql


    【解决方案1】:

    您的索引宽度似乎已超出。尝试 drop the index 获取 pem 字段。

    【讨论】:

    • 好吧,我还是想使用索引。
    • 在这种情况下添加另一个字段,例如 pem_short = models.CharField(max_length=2048, unique=True, blank=True, null=True) 然后在您的视图中将其分配为 pem 字段的前 2000 个字符。然后按短字段索引。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    相关资源
    最近更新 更多