在Knex迁移脚本

时间:2017-03-02 08:05:06

标签: knex.js

我正在尝试使用下面的代码

在迁移脚本中修改从日期到时间戳的列数据类型
knex.schema.alterTable('user', function(t) {
     t.timestamp('bifthday_date').alter(); 
});

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

3 个答案:

答案 0 :(得分:5)

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

    knex.raw('alter TABLE user ALTER COLUMN birthday_date TYPE timestamp with time zone')

答案 1 :(得分:2)

在今年以来,似乎knex会处理从日期到时间戳的alter列,这是我使用的代码:

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();
    });
}

请注意,在knex alter文档中:

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

答案 2 :(得分:0)

我认为这失败了,因为您试图用“ bifthday_date”而不是“ birthday_date”来调用列,而您后来在自己的答案中成功使用了“ birthday_date”。