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

如何为Sequelize.ARRAY(Sequelize.INTEGER)设置正确默认值?

解决Sequelize迁移中ARRAY字段默认值的语法问题

针对你遇到的Sequelize.ARRAY(Sequelize.INTEGER)类型字段设置默认值的问题,正确的设置方式需要根据使用的数据库类型调整:

PostgreSQL(Sequelize对ARRAY支持最优的数据库)

直接用Sequelize.literal包裹空数组的原生SQL语法,让Sequelize直接生成合法的SQL语句:

user_ids: {
  type: Sequelize.ARRAY(Sequelize.INTEGER),
  defaultValue: Sequelize.literal('ARRAY[]::INTEGER[]')
}

迁移时会生成DEFAULT ARRAY[]::INTEGER[]的合规SQL,避免解析错误。

其他数据库(如MySQL,注意:MySQL无原生ARRAY支持,Sequelize用JSON模拟)

如果使用MySQL这类不原生支持ARRAY的数据库,需将字段类型设为JSON,再设置对应默认值:

user_ids: {
  type: Sequelize.JSON,
  defaultValue: Sequelize.literal('JSON_ARRAY()')
}

也可以直接用字符串形式的空数组(但更推荐用literal避免转义问题):

user_ids: {
  type: Sequelize.JSON,
  defaultValue: '[]'
}

之前设置出错的原因

  • 直接设defaultValue: []时,Sequelize会将空数组解析为SQL空值,生成DEFAULT ,这种非法语法。
  • 设defaultValue: [0]时,Sequelize会展开数组为单个值,变成DEFAULT 0,不符合ARRAY类型的语法要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 03:01:01