在Knex中使用 .timestamp()
方法时,默认情况下会为该列设置当前时间戳作为默认值。然而,根据你的错误提示,数据库可能不支持此默认值。为了解决这个问题,你可以尝试以下方法:
- 如果你的数据库支持
DEFAULT CURRENT_TIMESTAMP
,你可以尝试在列定义中添加defaultTo(knex.fn.now())
来设置默认值。例如:
exports.up = async function(knex) {
return knex.schema.createTable("newTable", table => {
table.timestamp("timestamp").defaultTo(knex.fn.now()).notNullable();
});
}
- 如果你的数据库不支持
DEFAULT CURRENT_TIMESTAMP
,你可以将默认值设置为null
并移除notNullable()
约束。例如:
exports.up = async function(knex) {
return knex.schema.createTable("newTable", table => {
table.timestamp("timestamp").defaultTo(null);
});
}
值得注意的是,如果你在创建表之前已经运行过迁移文件,你需要先回滚到之前的版本,然后再运行含有以上更改的迁移文件。
如果以上的修改仍然无法解决问题,请提供更多信息,例如你使用的数据库类型和版本,以便我能够更好地帮助你。
标签:knex,DEFAULT,timestamp,defaultTo,table,默认值 From: https://blog.51cto.com/M82A1/9112843