簡體   English   中英

帶有 knex + Mysql 的 Node.js 遷移錯誤,而重命名列導致默認值

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

我是nodejs ,我的英語不好請幫助我,我只是想使用knexnodejs(express)遷移我的數據庫,我正在使用 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' 檢查它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM