postgresql – Sequelize migration queryInterface.removeColum无法正常工作

概述我创建了一个迁移文件,将列添加为up,然后将其删除. 这是迁移文件代码: module.exports = { up: (queryInterface, Sequelize) => queryInterface.addColumn('Books', 'Rating', { allowNull: false, type: Sequelize.ENUM('like' 我创建了一个迁移文件,将列添加为up,然后将其删除.

这是迁移文件代码:

module.exports = {  up: (queryInterface,Sequelize) =>    queryInterface.addColumn('Books','rating',{      allowNull: false,type: Sequelize.ENUM('like','dislike'),}),down: (queryInterface,Sequelize) => {    queryInterface.removeColumn('Books','rating');  },};

当我第一次使用db:migrate运行它时,它成功添加了列,但是当我执行db:migrate:undo:all然后再次运行迁移时,它向我抛出了一个错误sqying

======= 20180211100937-AddedratingIntoBooks: migrating ======= 2018-02-11 15:42:46.076 IST [64531] ERROR:  type "enum_Books_rating" already exists 2018-02-11 15:42:46.076 IST [64531] STATEMENT:  CREATE TYPE "public"."enum_Books_rating" AS ENUM('like','dislike');ALTER table "public"."Boo ks" ADD ColUMN "rating" "public"."enum_Books_rating";    ERROR: type "enum_Books_rating" already exists

这个问题仍然存在here.

解决方法 Sequelize为您定义的每个枚举创建TYPES,您可以找到 here

ENUM类型的名称是“enum”,表名称和蛇形图中的列名称的串联. (enum_Books_rating here)

要为ENUM创建迁移,您必须修改down函数,如下所示:

module.exports = {  up: (queryInterface,'dislike')  }),Sequelize) =>      queryInterface.removeColumn('Books','rating')      .then(() => queryInterface.sequelize.query('DROP TYPE "enum_Books_rating";'));  };

希望这可以帮助.

总结

以上是内存溢出为你收集整理的postgresql – Sequelize migration queryInterface.removeColum无法正常工作全部内容,希望文章能够帮你解决postgresql – Sequelize migration queryInterface.removeColum无法正常工作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1160480.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存