マイグレーションを使用してデータベースのモデルから列を削除しましたが、マイグレーションは成功しても、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のAlarmsテーブルをチェックしましたが、実際にはuser_idというカラムがないので、何が起こっているのか分かりません。
更新:この問題は外部キー列にのみ影響しているようです。モデルの他の列を追加/削除/名前変更することはできましたが、列の名前を変更するときに同じ問題が発生しましたdismissed_by。
移行の前後にモデルがある可能性があります。 –
@DanRocha問題は私がモデルの1つで削除するのを忘れてしまった関連性でした –