Sequelize 迁移 queryInterface.removeColum 无法工作
Sequelize migration queryInterface.removeColum fails to work
我创建了一个迁移文件,将一列添加为 up
,然后在 down
下将其删除。
迁移文件代码如下:
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"、table 名称和蛇形套管中的列名称的串联。 (enum_Books_Rating
这里)
要为 ENUM
创建迁移,您必须像这样修改 down 函数:
module.exports = {
up: (queryInterface, Sequelize) =>
queryInterface.addColumn('Books', 'Rating', {
allowNull: false,
type: Sequelize.ENUM('like', 'dislike')
}),
down: (queryInterface, Sequelize) =>
queryInterface.removeColumn('Books', 'Rating')
.then(() => queryInterface.sequelize.query('DROP TYPE "enum_Books_Rating";'));
};
希望对您有所帮助。
我创建了一个迁移文件,将一列添加为 up
,然后在 down
下将其删除。
迁移文件代码如下:
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"、table 名称和蛇形套管中的列名称的串联。 (enum_Books_Rating
这里)
要为 ENUM
创建迁移,您必须像这样修改 down 函数:
module.exports = {
up: (queryInterface, Sequelize) =>
queryInterface.addColumn('Books', 'Rating', {
allowNull: false,
type: Sequelize.ENUM('like', 'dislike')
}),
down: (queryInterface, Sequelize) =>
queryInterface.removeColumn('Books', 'Rating')
.then(() => queryInterface.sequelize.query('DROP TYPE "enum_Books_Rating";'));
};
希望对您有所帮助。