【发布时间】:2017-05-27 15:25:51
【问题描述】:
我使用 sequelize 迁移从我的数据库中的模型中删除了一个列,即使迁移成功执行,sequelize 仍在尝试查询我的 Node.js 应用程序中的相同字段。
这是我要执行的代码:
db.Alarm.all({ logging: console.log })
.catch(console.log)
这是查询日志输出的一部分(user_id 是删除的列):
Executing (default): SELECT "id", "driver_id", "dismissed_by", (...), "user_id"
FROM "alarms" AS "Alarm" WHERE "Alarm"."deleted_at" IS NULL;
这是 catch 输出的一部分:
{ [SequelizeDatabaseError: column "user_id" does not exist]
name: 'SequelizeDatabaseError',
message: 'column "user_id" does not exist',
original:
{ [error: column "user_id" does not exist]
name: 'error',
length: 101,
severity: 'ERROR',
code: '42703',
detail: undefined,
hint: undefined,
position: '257',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'parse_relation.c',
line: '3090',
routine: 'errorMissingColumn',
sql: 'SELECT "id", "driver_id", "dismissed_by", (...), "user_id" FROM "alarms" AS "Alarm" WHERE "Alarm"."deleted_at" IS NULL;' }
我已经从我的警报模型中删除了 user_id 字段和 belongsTo(User) 关联。我的模型对用户的唯一参考是列 dismissed_by,可以在上面的输出中看到。我还检查了 PostgreSQL 中的警报表,确实没有 user_id 列,所以我不知道发生了什么。
更新:这个问题似乎只影响外键列。我已经能够成功地从模型中添加/删除/重命名其他列,但是在重命名列 dismissed_by 时遇到了同样的问题。
【问题讨论】:
-
迁移前后的模型也许可以工作。需要更多信息来帮助
-
@DanRocha 问题是我忘记在其中一个模型中删除的关联
标签: node.js postgresql sequelize.js