【问题标题】:DataTypes.DECIMAL causing may be causing error: 'Unknown column' in Sequelize auto-migration commandDataTypes.DECIMAL 可能导致错误:Sequelize 自动迁移命令中的“未知列”
【发布时间】:2019-10-04 08:44:19
【问题描述】:

使用 Sequelize(Node.js 的 ORM),我正在尝试向数据类型为“DECIMAL”的表添加一列。我已经能够使用 DATE 和 STRING 的其他数据类型将其他列添加到其他相同的表中,但是这个 changeColumn 函数将不会执行。相反,当我尝试命令 sequelize db:migrate 时,我得到了 '错误:'category' 中的未知列 'default_price'。我对开发还很陌生,所以我对 Sequelize 还没有太多经验。

I run this command:

L05HandsOn>sequelize db:migrate

Sequelize CLI [Node: 8.11.4, CLI: 5.4.0, ORM: 4.43.0]

Loaded configuration file "config\config.json".
Using environment "development".
sequelize deprecated String based operators are now deprecated. Please use Symbol based operators for better security, read more at http://docs.sequelizejs.com/manual/tutorial/querying.html#operators node_modules\sequelize\lib\sequelize.js:242:13
File: _current.json does not match pattern: /\.js$/
File: _current_bak.json does not match pattern: /\.js$/
File: _current.json does not match pattern: /\.js$/
File: _current_bak.json does not match pattern: /\.js$/
File: _current.json does not match pattern: /\.js$/
File: _current_bak.json does not match pattern: /\.js$/
== 2-category_Decimal_migration: migrating =======
[#0] execute: changeColumn

ERROR: Unknown column 'default_price' in 'category

My migration.js file looks like this:

'use strict';

var Sequelize = require('sequelize');

/**
 * Actions summary:
 *
 * changeColumn "default_price" on table "category"
 *
 **/

var info = {
    "revision": 2,
    "name": "category_Decimal_migration",
    "created": "2019-05-17T01:56:58.412Z",
    "comment": ""
};

var migrationCommands = [{
    fn: "changeColumn",
    params: [
        "category",
        "default_price",
        {
            "type": Sequelize.DECIMAL(2, 2),
            "field": "default_price",
            "allowNull": false
        }
    ]
}];

module.exports = {
and so on ... 

When I run the 'sequelize db:migrate' command I expect to see

```[#0] execute: changeColumn
2-category_Decimal_migration: migrated (0.XXXs)```

【问题讨论】:

    标签: javascript mysql sequelize.js


    【解决方案1】:

    在这种情况下,所需的修复是在 changeColumn 之前运行 addColumn 命令——我试图更改一个不存在的列。由于自动 Sequelize 命令以迁移文件的形式执行大量幕后更改,因此按顺序执行文件创建步骤很重要——Sequelize 不会准确地告诉您您执行了不按顺序执行的步骤,但会我认为创建新的迁移文件。这可能会产生误导,因为如果一切就绪,最终可能会迁移迁移。在这种情况下,由于用户在模型创建步骤的基本顺序中出现错误,无法执行迁移。

    【讨论】:

      猜你喜欢
      • 2021-12-19
      • 2012-09-02
      • 2012-10-02
      • 2012-06-15
      • 2015-02-15
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多