0

我有以下在数据库中创建表的迁移文件,该文件名为20211215154722_assist_tracking.js

const { ASSIST_TABLE } = require('../repo/tables');

const up = async (knex) => {
    const exists = await knex.schema.hasTable(ASSIST_TABLE);

    if (!exists) {
        await knex.schema.createTable(ASSIST_TABLE, (table) => {
            table.string('email', 40);
        });
    }
};

const down = async (knex) => {
    await knex.schema.dropTable(ASSIST_TABLE);
};

module.exports = {
    up,
    down
};

我有另一个将数据填充到上面创建的表中的迁移,此文件名为20220120190740_ttp-balances.js  :

const { ASSIST_TABLE } = require('../repo/tables');
const getTTPBalances = require('../usecase/utils');

const up = async (knex) => {
    const exists = await knex.schema.hasTable(ASSIST_TABLE);

    if (exists) {
        const ttpBalances = getTTPBalances();

        // Deletes ALL prior entries from the Assist table
        await knex(ASSIST_TABLE)
            .del()
            .then(async () => {
                await knex(ASSIST_TABLE).insert(ttpBalances);
            });
    }
};

const down = async (knex) => {
    await knex(ASSIST_TABLE).del();
};

module.exports = {
    up,
    down
};

据我所知,当我执行以下命令时:knex migrate:latest所有迁移都是按顺序完成的(按创建时间顺序)。正如我们所看到的,第一个文件应该首先运行,然后是第二个文件。问题如下:

当我删除表(使用knex migrate:down 20211215154722_assist_tracking.js),运行表迁移knex migrate:up 20211215154722_assist_tracking.js(基本上再次构建表),然后尝试使用填充数据knex migrate:up 20220120190740_ttp-balances.js时,它不起作用。但是,当我使用 删除数据knex migrate:down 20220120190740_ttp-balances.js,然后使用 再次填充knex migrate:up 20220120190740_ttp-balances.js,而不删除表格时,效果很好。似乎删除了表,打断了流程,即使重新创建了表,以后也不会填充数据。为什么会发生这种情况?

4

0 回答 0