{ table.d-6ren">
gpt4 book ai didi

javascript - 如何创建不可为空的日期列?

转载 作者:行者123 更新时间:2023-11-28 05:06:12 24 4
gpt4 key购买 nike

我正在使用sqlite。我需要创建一个日期不可为空。我尝试了一下,但不起作用。

return knex.schema.table("my_table", (table) => {
table.date("important_day").notNullable().defaultTo(knex.fn.now());
});

使用此代码,我收到此错误消息:

Unhandled rejection Error: SQLITE_ERROR: Cannot add a column with non-constant default. Knex:warning - migrations failed with error: alter table minisermao add column diaminisermao date not null default CURRENT_TIMESTAMP - SQLITE_ERROR: Cannot add a column with non-constant default

如何解决?

最佳答案

确实,对于创建表,我们有一个不错的结果:

exports.up = function(knex, Promise) {
return knex.schema.createTable("foo", function(tb){
tb.date("xpto").notNullable().defaultTo(knex.fn.now());
})
};

exports.down = function(knex, Promise) {
return knex.schema.dropTable("foo");
};

但是对于更改表操作,它会给我们一个错误。

如果可能,请尝试以下操作:

进行迁移以删除当前表:

exports.up = function(knex, Promise) {
return knex.schema.dropTable("foo");
};

exports.down = function(knex, Promise) {
return knex.schema.createTable("foo", function(tb){
tb.date("xpto").notNullable().defaultTo(knex.fn.now());
});
};

然后进行第二次迁移以再次创建表。

我建议采用这种方法,因为如果该项目安装在生产环境中,那么更改已执行的迁移并不是一个健康的方法。

希望有帮助。

更新:

同样的更改表在 postgresql 上完美运行。

关于javascript - 如何创建不可为空的日期列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41733085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com