Supabase初始迁移报错:relation 'flow_state_created_at_idx'已存在
解决Supabase GitHub Actions迁移报错:relation "flow_state_created_at_idx" already exists
报错含义解析
这个错误是PostgreSQL的重复对象冲突(错误码42P07),意思是你要创建的flow_state_created_at_idx索引已经在auth.flow_state表上存在了,但你的迁移脚本里又执行了一次CREATE INDEX语句,导致数据库抛出冲突错误。
问题原因
大概率是这两种情况:
- Supabase的
authschema默认自带了这个索引,而你用CLI生成的迁移脚本里重复添加了创建该索引的语句; - 预发布环境的数据库之前已经通过其他方式(比如手动执行SQL、旧版本迁移)创建过这个索引,现在新迁移脚本又重复执行创建操作。
解决步骤
- 确认索引状态
在Supabase预发布环境的SQL编辑器里执行以下语句,确认auth.flow_state表上是否真的存在这个索引:
SELECT indexname FROM pg_indexes WHERE tablename='flow_state' AND schemaname='auth';
如果查询结果里包含flow_state_created_at_idx,说明索引确实已存在。
- 修改迁移脚本
找到触发报错的那条迁移文件,把里面的创建索引语句:
CREATE INDEX flow_state_created_at_idx ON auth.flow_state USING btree (created_at DESC);
改成带IF NOT EXISTS的安全写法:
CREATE INDEX IF NOT EXISTS flow_state_created_at_idx ON auth.flow_state USING btree (created_at DESC);
或者,如果确认这个索引是Supabase auth模块默认自带的,直接删除这条创建索引的语句即可。
- 重新执行工作流
提交修改后的迁移脚本到GitHub,重新触发GitHub Actions工作流,应该就能解决这个冲突问题。
内容的提问来源于stack exchange,提问作者Augusto Oliveira
相关产品推荐
相关产品推荐

