简体   繁体   中英

Node.js with knex + Mysql migrate error while rename column cause default value

I am new in nodejs and my english is bad please help me, I am just trying to migrate my database in nodejs(express) using knex , and I'm using Mysql for database. I want to rename one field in table, and when I try to migrate my database, I got some problem that say error default value.

here is what I'm trying to do :

My migrate

 exports.up = function(knex) { return knex.schema.table ('tbl_skills', function(table) { table.renameColumn('preminum_price', 'premium_price') }) };

Here my database structure

 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 |

and this what I got when I'm trying 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'

I dont know to how set value for insertdate with default value. Please help

That is most probably because of server SQL Mode - NO_ZERO_DATE .

In strict mode, don't allow '0000-00-00' as a valid date. You can still insert zero dates with the IGNORE option. When not in strict mode, the date is accepted but a warning is generated. If you have access to my.ini (mysql conf file) remove the NO_ZERO_DATA from sql-mode and restart the server.

You can check it with SHOW VARIABLES LIKE 'sql_mode'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM