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 正在运行的迁移结果无法读取未定义的属性“键”的主要内容,如果未能解决你的问题,请参考以下文章
NodeJS sequelize 自动生成模型并运行迁移 SQL 语法错误
在 Elastic Beanstalk 中运行时出现 Sequelize 迁移错误