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

Sequelize使用uuid_generate_v4设置默认值报语法错误如何解决?

Sequelize配置uuid默认值报错问题及解决方案

问题场景

在PostgreSQL数据库中使用Sequelize ORM配置模型字段的uuid默认值,已完成以下前置操作:

  • 已启用uuid-ossp扩展,通过数据库执行SELECT语句验证扩展安装正常,可正常调用uuid_generate_v4()函数
  • 按照规范编写模型字段定义:
public_id: {
  field:        'public_id',
  type:         Sequelize.UUID,
  allowNull:    false,
  defaultValue: Sequelize.literal('uuid_generate_v4()'),
},

报错信息

同步模型与数据库创建表时,Sequelize抛出如下错误:

Error: Invalid value Literal { val: 'uuid_generate_v4()' }

调试Sequelize源码后定位到报错点在sql_string.js的如下位置:

if (!val.replace) {
  throw new Error(`Invalid value ${logger.inspect(val)}`);
}

报错触发逻辑为:传入的val不存在replace方法,无论literal方法传入参数内容是什么,都会触发相同报错。

根本原因

前文给出的模型定义代码完全正确,报错由项目自身依赖问题导致:
项目结构复杂度较高,模型定义阶段和调用Sequelize.define方法阶段,分别引入了两个不同文件夹下安装的Sequelize依赖包。
Sequelize底层对Sequelize.literal生成的Literal实例做了instanceof判断,由于实例来自不同的依赖包,判断返回假值,Literal实例没有被正确识别,被当作普通值处理触发了后续报错。

解决方案

清理项目中重复的Sequelize依赖文件夹,保证模型定义和模型注册环节使用同一个Sequelize依赖包即可解决问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:24:03