我是 nodejs
的新手,我的英语很糟糕,请帮助我,我只是尝试使用 knex< 在
,我使用Mysql作为数据库。我想重命名表中的一个字段,当我尝试迁移数据库时,我遇到了一些问题,提示默认值错误。nodejs(express)
中迁移我的数据库
这就是我正在尝试做的事情:
我的迁移
exports.up = function(knex) {
return knex.schema.table ('tbl_skills', function(table) {
table.renameColumn('preminum_price', 'premium_price')
})
};
这是我的数据库结构
Name | Datatype | length | Default |
id | INT | 20 | No default |
preminum_price | DOUBLE | 5,2 | No default |
insertdate | TIMESTAMP| | 0000-00-00 00:00:00 |
updatedate | TIMESTAMP| | 0000-00-00 00:00:00 |
这是我尝试 knex migrate:latest 时得到的结果
migration file "20191125105226_alter_tbl_skills.js" failed
migration failed with error: alter table `tbl_skills` change `preminum_price` `premium_price` double(5,2) NOT NULL - ER_INVALID_DEFAULT: Invalid default value for 'insertdate'
Error: ER_INVALID_DEFAULT: Invalid default value for 'insertdate'
我不知道如何使用默认值设置插入日期的值。请帮忙
最佳答案
这很可能是因为服务器 SQL 模式 - NO_ZERO_DATE .
在严格模式下,不允许“0000-00-00”作为有效日期。您仍然可以使用 IGNORE 选项插入零日期。当不处于严格模式时,日期会被接受,但会生成警告。如果您有权访问 my.ini(mysql conf 文件),请从 sql 模式中删除 NO_ZERO_DATA 并重新启动服务器。
您可以使用 SHOW VARIABLES LIKE 'sql_mode' 检查它
关于mysql - Node.js 与 knex + Mysql 重命名列时迁移错误导致默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59027294/