首页 > 其他分享 >knex迁移 - 'ER_INVALID_DEFAULT: 'timestamp'的默认值无效

knex迁移 - 'ER_INVALID_DEFAULT: 'timestamp'的默认值无效

时间:2024-01-05 13:03:31浏览次数:35  
标签:knex DEFAULT timestamp defaultTo table 默认值


在Knex中使用 .timestamp() 方法时,默认情况下会为该列设置当前时间戳作为默认值。然而,根据你的错误提示,数据库可能不支持此默认值。为了解决这个问题,你可以尝试以下方法:

  1. 如果你的数据库支持 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();
  });
}
  1. 如果你的数据库不支持 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

相关文章