回滚迁移时不会删除表
Tables are not dropped when rolling back migration
当我从 Knex 执行回滚命令时,它只会从 knex_migrations
table 中删除行,但不会从迁移创建的 table 中删除行。
我正在使用 MySQL,但 SQLite3 也是如此。
GitHub 存储库:https://github.com/patrick-vieira/knex-rollback
第一次迁移:
import * as Knex from 'knex';
export async function up(knex: Knex): Promise<void>{
return knex.schema.createTable('users', table => {
table.increments('id').primary();
table.string('name').notNullable();
table.string('avatar').notNullable();
table.string('whatsapp').notNullable();
table.string('bio').notNullable();
});
}
// roolback
export async function down(knex: Knex): Promise<void> {
knex.schema.dropTable('users');
}
您始终需要 return 来自 up
和 down
函数的 knex
操作的结果。如果您查看我在您的问题中编辑过的示例,您会发现您在 up
中使用了 return
语句,但在 down
.
中没有使用
此外,迁移 return 架构构建器(不是 void
)。我通常不会在 TS 中编写迁移,但我认为您正在寻找的 signature-wise 类似于:
import Knex, { SchemaBuilder } from 'knex'
export const up = (knex: Knex): SchemaBuilder => {
return knex.schema.createTable( // ... etc ...
}
确保您始终记住 return 结果的一个技巧是利用箭头函数 auto-return:
export const up = (knex: Knex) => knex.schema.createTable(
// ... etc ...
当我从 Knex 执行回滚命令时,它只会从 knex_migrations
table 中删除行,但不会从迁移创建的 table 中删除行。
我正在使用 MySQL,但 SQLite3 也是如此。
GitHub 存储库:https://github.com/patrick-vieira/knex-rollback
第一次迁移:
import * as Knex from 'knex';
export async function up(knex: Knex): Promise<void>{
return knex.schema.createTable('users', table => {
table.increments('id').primary();
table.string('name').notNullable();
table.string('avatar').notNullable();
table.string('whatsapp').notNullable();
table.string('bio').notNullable();
});
}
// roolback
export async function down(knex: Knex): Promise<void> {
knex.schema.dropTable('users');
}
您始终需要 return 来自 up
和 down
函数的 knex
操作的结果。如果您查看我在您的问题中编辑过的示例,您会发现您在 up
中使用了 return
语句,但在 down
.
此外,迁移 return 架构构建器(不是 void
)。我通常不会在 TS 中编写迁移,但我认为您正在寻找的 signature-wise 类似于:
import Knex, { SchemaBuilder } from 'knex'
export const up = (knex: Knex): SchemaBuilder => {
return knex.schema.createTable( // ... etc ...
}
确保您始终记住 return 结果的一个技巧是利用箭头函数 auto-return:
export const up = (knex: Knex) => knex.schema.createTable(
// ... etc ...