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

Directus 10中使用Knex批量重命名表遇迁移冲突的解决问询

Directus 10迁移报错“Migration keys collide!”的原因与解决方法

1. 错误原因

  • 迁移文件的唯一标识(Migration Key)重复:Directus依靠迁移文件名里的前缀(比如2023-06-23__002)作为唯一key来跟踪已执行的迁移任务。如果这个key已经在数据库的directus_migrations表中存在,或者本地迁移目录里有其他文件用了相同的key,就会触发该错误。
  • 常见触发场景:
    • 之前已经执行过同key的迁移,哪怕你修改了文件内容,Directus依然会识别到key重复。
    • 迁移文件名的编号部分(比如__002__)和其他已存在的迁移文件序号重复。

2. 修复步骤

方法一:修改迁移文件的唯一key

直接重命名你的迁移文件,调整文件名里的时间戳或编号部分,确保生成唯一的key。比如把2023-06-23__002__rename-tables.js改成2023-06-23__003__rename-tables.js(如果002已被使用),或者更新时间戳为当前时间,比如2024-05-20__001__rename-tables.js。

注意:文件名必须遵循YYYY-MM-DD__NNN__description.js的格式,其中NNN是三位数字序号,要和所有已存在的迁移文件序号不重复。

方法二:清理冲突的迁移记录(谨慎操作)

如果这个迁移确实已经执行过,或者你需要移除冲突的key记录:

  1. 连接到Directus的数据库,找到directus_migrations表。
  2. 查询表中是否存在和当前迁移文件key相同的记录(key就是文件名里__description.js之前的部分,比如2023-06-23__002)。
  3. 若该记录对应的迁移已完成且无需保留,可以删除这条记录,然后重新执行迁移命令。

重要提醒:操作数据库前务必备份,防止数据丢失。

方法三:检查本地迁移文件目录

查看Directus项目下的extensions/migrations目录(或自定义迁移目录),确认是否有其他迁移文件使用了相同的YYYY-MM-DD__NNN前缀,删除或重命名重复的文件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:07:15