Strapi从SQLite迁移至PostgreSQL时遭遇索引冲突错误求助
修复Strapi从SQLite迁移PostgreSQL的索引冲突问题
这个错误核心原因是PostgreSQL对表、索引等标识符的长度限制为63字符,Strapi自动生成的长索引名被截断后,和数据库中已存在的索引名重复导致冲突。以下是具体修复步骤:
手动清理冲突索引
登录PostgreSQL数据库,先查询目标表的所有索引:SELECT indexname FROM pg_indexes WHERE tablename = 'delivery_service_types_shop_required_verifications_links';找到名为
delivery_service_types_shop_required_verifications_links_order_的索引,执行删除命令:DROP INDEX IF EXISTS "delivery_service_types_shop_required_verifications_links_order_";自定义索引名避免后续冲突(可选)
找到对应模型的配置文件(路径一般为src/api/[关联模型名]/models/[模型名].js),在关联字段里手动指定短索引名:module.exports = { attributes: { // 其他字段配置... delivery_service_type_order: { model: 'delivery-service-type', indexName: 'dst_shop_verif_order_idx' // 用短名称替代自动生成的长名 } } };重新执行迁移
运行Strapi的迁移命令或者直接启动项目:npm run strapi migrate # 开发环境也可直接启动项目触发迁移 npm run develop
内容的提问来源于stack exchange,提问作者Joakim Adeny
相关产品推荐
相关产品推荐

