mysql - Node.js 与 knex + Mysql 迁移错误,而重命名列导致默认值
问题描述
我是新手,nodejs
我的英语不好,请帮助我,我只是想在nodejs(express)
using中迁移我的数据库knex
,而我正在使用 Mysql 作为数据库。我想重命名表中的一个字段,当我尝试迁移我的数据库时,我遇到了一些问题,说错误默认值。
这是我想要做的:
我的迁移
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 时得到的:最新
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'
我不知道如何使用默认值设置 insertdate 的值。请帮忙
解决方案
这很可能是因为服务器 SQL 模式 - NO_ZERO_DATE。
在严格模式下,不允许 '0000-00-00' 作为有效日期。您仍然可以使用 IGNORE 选项插入零日期。当不在严格模式下时,日期会被接受,但会生成警告。如果您有权访问 my.ini(mysql conf 文件),请从 sql-mode 中删除 NO_ZERO_DATA 并重新启动服务器。
您可以使用 SHOW VARIABLES LIKE 'sql_mode' 检查它
推荐阅读
- php - onsubmit 下拉列表后获取值
- codenameone - 由于 retrolambda 问题,构建 CN1 应用程序不起作用
- azure - 有没有办法从 Azure 自动化帐户中的混合工作人员组中删除过时的机器工作人员?
- mongodb - (如何)我可以通过 gitlab 在 GKE 中使用带有 mongodb 的动态卷吗?
- paypal - 在 Postman 中进行测试时,我需要在标题和正文类型中放入哪些参数?
- python - 在 python 字典中的 tkinter 程序中使用 winsound
- javascript - 无法在 Chrome 扩展程序中创建通知。接收未捕获的类型错误:无法读取未定义错误的属性“创建”
- html - 两个div之间的垂直线?
- powerbi - 如何在另一个查询中使用一个查询?
- sas - 通配符选择where语句中的所有结果?