postgresql – Sequelize migration queryInterface.removeColum
发布时间:2020-12-13 15:58:22 所属栏目:百科 来源:网络整理
导读:我创建了一个迁移文件,将列添加为up,然后将其删除. 这是迁移文件代码: module.exports = { up: (queryInterface,Sequelize) = queryInterface.addColumn('Books','Rating',{ allowNull: false,type: Sequelize.ENUM('like','dislike'),}),down: (queryInter
我创建了一个迁移文件,将列添加为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";')); }; 希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |