【发布时间】:2018-01-18 17:00:24
【问题描述】:
我有一个 postgresql 数据库,我需要先播种并使用预先确定的 id,然后当我向数据库创建新项目时,我希望 id 自动递增。当我使用 SQLite 数据库时,这很简单。当我使用 PostgreSQL DB 尝试相同的代码时,我发现 sequelize 创建的 ID 从零开始,并且 忽略了种子创建的索引,导致唯一约束错误。
我认为这是因为 postgresql 使用单独的序列来跟踪增量。我从这里开始的方法是使用来自 sequelize 的原始查询来更改序列。但是当我尝试运行改变序列查询时,sequelize 找不到序列。我跑:
db.query("ALTER SEQUENCE COMPOUND_CPCD_seq RESTART WITH 100;");
但是会生成一个错误,并在错误消息中指出“未处理的拒绝 SequelizeDatabaseError:关系“compound_cpcd_seq”不存在”。这是大写和小写字母的问题,因为 COMPOUND_CPCD_seq 不等于 Compound_cpcd.seq?如果是这种情况,你如何解决这个问题(因为我无法控制 COMPOUND_CPCD_seq 的创建方式)?
我错过了什么?
型号:
const COMPOUND= db.define('COMPOUND', {
CPCD: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true,
unique: true,
},
Name: {
type: Sequelize.STRING,
}
})
【问题讨论】:
标签: node.js postgresql sequelize.js auto-increment