【发布时间】:2021-12-30 21:09:13
【问题描述】:
我使用pg_dump 复制数据库copy1.sql。
我运行向上迁移以创建一个新实例
up: asyn (queryInterface) => {
return await queryInterface.bulkInsert('keys', [{ clientKey: 'key123' }]);
}
我运行向下迁移以删除实例
down: async (queryInterface) => {
return await queryInterface.bulkDelete('keys', { clientKey: ['key123'] });
}
我做另一个pg_dump 的数据库,copy2.sql。我将数据库的第一个副本与数据库的第二个副本进行比较,以显示通过运行 bash 脚本向下迁移工作正常
diff "copy1.sql" "copy2.sql"
区别是
-SELECT pg_catalog.setval('public.keys_id_seq', 6, true);
+SELECT pg_catalog.setval('public.keys_id_seq', 7, true);
这使我的测试失败,因为由于这种差异,两个数据库的副本并不相同。即使我删除了那个键,根据这个document,它表示下一个 id 序列将从 8 而不是 7 开始。当前存在的表行是 1 到 6。有没有办法删除实例以使序列从 7 开始而不是 8?这意味着数据库的两个副本都应该有
SELECT pg_catalog.setval('public.keys_id_seq', 6, true);
我可以包括哪些选项?也许像
down: async (queryInterface) => {
return await queryInterface.bulkDelete('keys', { clientKey: ['key123'] }, { resetIdSequence: true });
}
【问题讨论】:
-
AFAIK 没有这样的选项。您应该手动将序列设置为所需的值。
标签: sql postgresql sequelize.js queryinterface bulk-delete