Sequelize 正在运行的迁移结果无法读取未定义的属性“键”

Posted

技术标签:

【中文标题】Sequelize 正在运行的迁移结果无法读取未定义的属性“键”【英文标题】:Sequelize running migration results Cannot read property 'key' of undefined 【发布时间】:2018-10-22 03:24:32 【问题描述】:

我想更新列以将 not null 设置为 false,但是运行 db:migration 失败并显示以下错误消息:

无法读取未定义的属性“键”

这是迁移的代码:

'use strict';

module.exports = 
  up: (queryInterface, Sequelize) => 
   return queryInterface.changeColumn('Notes', 'title', 
     allowNull: false
   );
  ,

  down: (queryInterface, Sequelize) => 
    return queryInterface.changeColumn('Notes', 'title', 
      allowNull: true
    );
  
;

跟document一样,我的代码好像没什么问题。

表和字段都存在,我哪里错了?

【问题讨论】:

你能分享一些详细的代码吗?至少包含您正在执行此操作的处理程序函数以及显示该错误的行/文件。 @RahulYadav 实际上没有更多的代码。我所做的只是运行 $ sequelize db:migrate 并得到了那个错误。 【参考方案1】:

我自己也遇到了这个问题。从我在源代码中看到的 Sequelize 假设您在更改列时始终提供类型。我在您链接的文档中也看到了它:“请确保您完全描述了新的数据类型。”

【讨论】:

【参考方案2】:

只是提示如何解决它。我认为查询接口对象无法找到必须迁移的表的名称或列。你能在里面打印你的 Sequelize 对象和模型,并输入你的 Sequelize 对象所拥有的相同名称。我尝试过同一个库,它就像一个魅力。

【讨论】:

【参考方案3】:

您必须提供您想要更改或不更改的列类型。

'use strict';

module.exports = 
 up: (queryInterface, Sequelize) => 
  return queryInterface.changeColumn('Notes', 'title', 
    type: Sequelize.STRING,
    allowNull: false
  );
 ,

 down: (queryInterface, Sequelize) => 
   return queryInterface.changeColumn('Notes', 'title', 
     type: Sequelize.STRING,
     allowNull: true
   );
 
;

【讨论】:

以上是关于Sequelize 正在运行的迁移结果无法读取未定义的属性“键”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Docker 中运行 Sequelize 迁移

NodeJS sequelize 自动生成模型并运行迁移 SQL 语法错误

在 Elastic Beanstalk 中运行时出现 Sequelize 迁移错误

为什么使用Sequelize迁移创建表,但模型无法连接到数据库

使用sequelize时如何自动创建迁移文件?

Sequelize,GraphJS:无法读取 null 的属性“2”