在Knex迁移脚本中修改列数据类型

Asm*_*ita 3 knex.js

我正在尝试使用下面的代码在迁移脚本中修改从日期到时间戳的列数据类型

knex.schema.alterTable('user', function(t) {
     t.timestamp('bifthday_date').alter(); 
});
Run Code Online (Sandbox Code Playgroud)

错误:Knex:警告 - 迁移失败,错误:table.timestamp(...).alter不是函数

icc*_*c97 7

自首次回答以来,似乎 Knex.js 0.21.15(可能更早但不知道从什么时候开始)将处理从日期到时间戳的更改列,这是我使用的代码:

exports.up = async function(knex, Promise) {
    await knex.schema.alterTable('campaigns', function(table) {
        table.timestamp('intake_start_date').alter();
        table.timestamp('intake_end_date').alter();
    });
}
Run Code Online (Sandbox Code Playgroud)

请注意,在knexalter文档中:

将列标记为更改/修改,而​​不是默认添加。注意:这仅适用于 .alterTable(),SQlite 或 Amazon Redshift 不支持。


Asm*_*ita 6

我已设法使用knex原始查询修改数据类型.

    knex.raw('alter TABLE user ALTER COLUMN birthday_date TYPE timestamp with time zone')
Run Code Online (Sandbox Code Playgroud)