You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Directus 10设置DB_CHARSET=utf8mb4后外键约束不兼容报错求助

解决Directus 10中外键约束不兼容的问题

这个报错的核心是外键关联的两个字段属性不匹配——哪怕数据库全局字符集是utf8mb4,只要字段层面的类型、长度、排序规则有差异,就会触发这个错误。以下是具体排查和解决步骤:

  • 核对字段属性一致性
    直接查询两张表的字段详情,确认test77777.test和directus_files.id的类型、长度、排序规则、可空性完全一致:

    -- 查看directus_files.id的属性
    DESCRIBE directus_files;
    -- 查看test77777.test的属性
    DESCRIBE test77777;
    

    Directus默认的directus_files.id是CHAR(36)类型,排序规则通常为utf8mb4_bin(UUID默认区分大小写),如果你的test字段是VARCHAR或者用了utf8mb4_general_ci排序规则,就会出现不兼容。

  • 修正字段属性
    如果是排序规则不匹配,执行SQL修改字段:

    ALTER TABLE `test77777` MODIFY COLUMN `test` CHAR(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL;
    

    确保类型、长度、排序规则和directus_files.id完全对应后,再回到Directus重新保存字段的关联设置。

  • 补全.env配置
    只设置DB_CHARSET可能不够,建议在.env中明确指定排序规则,和数据库全局配置保持一致:

    DB_CHARSET="utf8mb4"
    DB_COLLATION="utf8mb4_general_ci"
    

    修改后重启Directus服务,避免配置不生效。

  • 注意Directus字段类型选择
    在Directus中创建关联字段时,直接选择UUID类型而非手动选字符串类型,系统会自动匹配目标表id的属性,减少手动配置出错的概率。

内容的提问来源于stack exchange,提问作者Stev24

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:52:16