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

Prisma:列长度错误致迁移失败,如何不重置数据库修复

解决Prisma迁移因varchar长度超限导致的问题

问题概述

  • 迁移时给cardJson列设置了过长的varchar长度,触发MySQL错误1074(最大允许16383),导致迁移失败
  • 用prisma migrate resolve --rolled-back "20221205190350_migration_name_here"标记迁移回滚后,修改了迁移文件和schema里的字段类型(改成TEXT/BLOB),但重新执行迁移时提示该迁移已应用
  • 涉事表是空表,可以删除,拒绝重置整个数据库

完整错误信息翻译

Error: P3006

迁移20221205190350_migration_name_here无法正常应用到影子数据库。
错误代码: P3018
错误详情:
迁移应用失败,必须先修复该错误才能继续应用新迁移。

迁移名称: 20221205190350_migration_name_here

数据库错误代码: 1074

数据库错误:
列'cardJson'的长度过大(最大值为16383);请改用BLOB或TEXT类型

请检查迁移文件中的第1条查询语句。

修复步骤

1. 删除Prisma的迁移追踪记录

登录你的数据库(用MySQL命令行、Navicat或其他可视化工具均可),找到_prisma_migrations表,删除其中迁移名称为20221205190350_migration_name_here的那条记录。这个表是Prisma用来记录哪些迁移已经执行过的核心表,删掉这条记录后,Prisma会认定该迁移从未被执行。

2. 删除空的涉事表

因为涉事表是空的,直接执行SQL删除:

DROP TABLE IF EXISTS `你的表名`;

把你的表名替换成实际出问题的表名称。

3. 重新执行迁移

回到项目根目录,执行命令:

prisma migrate dev

此时Prisma会重新读取你修改后的迁移文件,正常执行迁移——因为之前的迁移记录已清除,空表也删掉了,不会再触发之前的长度错误。

4. 验证修复结果

执行prisma studio打开Prisma的可视化工具,检查涉事表的cardJson列是否已经是TEXT/BLOB类型,确认表结构无误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:25:26