运行db-migrate up报No value specified for parameter 1错误怎么解决?
问题产生原因
- 第一层报错
No value specified for parameter 1是db-migrate-pg-aurora驱动的已知bug:1.2.0及更早版本的驱动在执行migrations_state表的查询逻辑时,没有将SQL语句中占位符?对应的参数值正确传入Aurora Data API调用,触发数据库层参数缺失错误。 - 第二层报错
TypeError: callback is not a function是驱动的异常处理逻辑缺陷:SQL执行报错后,驱动尝试调用回调函数回传错误,但它接收的回调参数实际与新版db-migrate核心包的传参接口不匹配,回调值为非函数类型,直接调用就触发了未捕获的Promise拒绝异常,程序直接崩溃,最终返回状态码1导致CI构建失败。
解决方案
- 优先升级依赖版本:将
db-migrate-pg-aurora包升级到1.3.0及以上的稳定版,该版本已经同时修复了参数绑定缺陷和回调接口兼容问题,是最彻底的解决方式。如果升级驱动后出现其他兼容冲突,可以临时将db-migrate核心包降级到0.11.x版本,和旧版驱动做适配。 - 临时规避方案:如果暂时无法更新依赖,可以提前手动在目标库创建
migrations_state表,并插入初始的last-run记录,跳过驱动的初始化查询逻辑,避免触发bug。 - 发布前验证:修改配置后先在本地执行
db-migrate up --dry-run验证命令可正常运行,再推送到CI环境执行,避免构建失败。
内容的提问来源于stack exchange,提问作者Akh
相关产品推荐
相关产品推荐

