使用Sequelize.js,Node.js和PostgreSQL。
尝试强制将模型同步到数据库(drop everything, create everything
)时,我会收到为任何枚举字段创建的类型的错误。
示例:
{
[error: cannot drop type "enum_Availabilities_status" because other objects depend on it]
length: 304,
name: 'error',
severity: 'ERROR',
code: '2BP01',
detail: 'table "Availabilities" column status depends on type "enum_Availabilities_status"',
hint: 'Use DROP ... CASCADE to drop the dependent objects too.',
position: undefined,
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
file: 'src\\backend\\catalog\\dependency.c',
line: '951',
routine: 'reportDependentObjects'
}
执行后会出现:
sequelize.sync({ force: true })
有关如何解决这个问题的任何建议吗?
答案 0 :(得分:2)
我无法告诉你ORM是如何做的,但是你可以通过删除SQL并发出以下内容来强制执行此操作:
DROP TYPE IF EXISTS enum_Availabilities_status CASCADE;
我的猜测是SQL调用中缺少CASCADE。然后重新同步。
请先在您的数据库副本上尝试此操作。如果您已在列中输入类型,我不会100%确定会发生什么。
答案 1 :(得分:1)
我找到了解决方案。首先删除所有使用枚举的表。然后删除枚举。
await queryInterface.dropTable('Attachments');
await queryInterface.sequelize.query('DROP TYPE "enum_Attachments_parent_type";');