Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何为单个文件运行Sequelize向下迁移_Sql_Postgresql_Sequelize.js_Sequelize Cli - Fatal编程技术网

Sql 如何为单个文件运行Sequelize向下迁移

Sql 如何为单个文件运行Sequelize向下迁移,sql,postgresql,sequelize.js,sequelize-cli,Sql,Postgresql,Sequelize.js,Sequelize Cli,我正在使用Sequelize进行迁移。如果迁移up方法抛出错误,则迁移不会作为已完成记录在数据库中。因此,如果我运行db:migrate:undo,它将在上一次(正在工作的)迁移中运行down。因此,我有一个半执行的迁移,其中它的模式保留在数据库中,因为Sequelize永远不会运行相应的down方法。因此,我需要以某种方式强制运行单个方法(我看不到任何选项)。或者,每次运行失败的迁移时,我都需要手动清理我的数据库,这对于复杂的迁移来说是一件非常痛苦的事情,因为我经常要经历反复试验。有没有更简单

我正在使用Sequelize进行迁移。如果迁移
up
方法抛出错误,则迁移不会作为已完成记录在数据库中。因此,如果我运行
db:migrate:undo
,它将在上一次(正在工作的)迁移中运行
down
。因此,我有一个半执行的迁移,其中它的模式保留在数据库中,因为Sequelize永远不会运行相应的
down
方法。因此,我需要以某种方式强制运行单个
方法(我看不到任何选项)。或者,每次运行失败的迁移时,我都需要手动清理我的数据库,这对于复杂的迁移来说是一件非常痛苦的事情,因为我经常要经历反复试验。有没有更简单的方法

目前还没有办法做到这一点。。。Sequelize cli中存在一个未决问题,请手动将迁移插入到迁移表中,以便Sequelize认为它已完成

要验证,请在编辑表之前和之后检查迁移的状态

db:migrate:status
所有列为“向上”的东西都可以“向下”,反之亦然

sequelize db:migrate:undo --name 20200409091823-example_table.js

使用此选项可撤消任何特定迁移

我尝试了一些方法,但效果不错:

  • 重命名迁移文件,并确保它按字母顺序排在第一位(使其成为迁移文件中的第一个)
  • 第二个迁移文件中的注释代码
  • 运行
    sequelize db:migrate
这将只运行第一个迁移文件

不要忘记取消注释您之前评论过的迁移文件