使用 Postgres 的 Knex 迁移总是说 'Already up to date'

Knex migrations with Postgres always say 'Already up to date'

我正在尝试使用 Knex 迁移更改我的 Postgres 数据库,但它们不起作用。

我的 knexfile.js 看起来像这样:

module.exports = {
  development: {
    client: 'pg',
    connection: {
      database: 'cms_dev',
    },
  },
};

然后我有一个 db.js 看起来像这样:

const config = require('../knexfile.js');

const env = 'development';
const knex = require('knex')(config[env]);

module.exports = knex;

knex.migrate.latest([config]);

如果我从一个新的数据库开始,我的第一次迁移工作正常,但如果我尝试用一​​个新的(第二次)迁移更新数据库,它什么也不做。

当我尝试 运行 knex migrate:latest --env development 时,它说:

Using environment: development
Already up to date

*****编辑*****

我最终生成了另一个新的(第 3 次)迁移,并粘贴了与前一个被忽略的代码完全相同的代码,但它起作用了。不知道为什么第二次迁移默默地失败而第三次迁移成功了。

我想通了这个问题。我忘记配置 nodemon 以忽略我的迁移文件夹。

因为我在db.js中有这一行:

knex.migrate.latest([config]);

如果我在创建迁移时完全保存,我的服务器将重新启动并导致最新的和不完整的迁移被触发。由于仅迁移 运行 一次,Knex 会认为数据库已经是最新的。

如果您只是想从头开始重新运行 任何迁移,请删除您选择的 schema/database 中的迁移表。