我有一套序列模型。我想使用迁移,而不是数据库同步。
根据这篇文章,Sequelize CLI似乎能够做到这一点:“当您使用CLI生成模型时,您还可以免费获得迁移脚本。”
如何使用Sequelize CLI从现有的Sequelize模型中自动生成迁移?
现在是 2020 年,其中许多答案不再适用于 Sequelize v4/v5/v6 生态系统。
一个很好的答案是使用< code > sequel ize-auto-migrations ,但是在您的项目中使用可能不够规范。这里有更多的颜色...
我的团队使用的分叉来延续自动迁移
,因为原始的repo还没有合并几个关键的PR#56 #57 #58 #59
$ yarn add github:scimonster/sequelize-auto-migrations#a063aa6535a3f580623581bf866cef2d609531ba
编辑包.json:
"scripts": {
...
"db:makemigrations": "./node_modules/sequelize-auto-migrations/bin/makemigration.js",
...
}
注意:请确保使用的是 git(或某些源代码管理)和数据库备份,以便在出现问题时可以撤消这些更改。
.sync()
yarn-db:makemigrations-name“mega migration”
)。.sync()
或手工编写的迁移,则需要通过将其名称插入SequelizeMeta表来“伪造”该大型迁移插入SequelizeMeta值('01-mega-migration.js')
。$yarn db:makemigrations--命名任何
02 whather.js
迁移以及对_current.json
和
$yarn续集db:migrate
运行迁移。removeColumn
和addColumn
。这将丢失生产中的数据。您需要修改向上和向下操作以使用renameColumn
对于那些对如何使用renameColumn
感到困惑的人来说,代码片段如下所示。(切换回滚命令的“column_name_before”和“column _name_after”
)
{
fn: "renameColumn",
params: [
"table_name",
"column_name_before",
"column_name_after",
{
transaction: transaction
}
]
}
如果您有许多迁移,down操作可能无法以顺序一致的方式完美地删除项目。
该库的维护者不会主动检查它。因此,如果它开箱即用,您将需要找到不同的社区分叉或其他解决方案。
无法为现有模型创建迁移脚本。
资源:
如果采用传统方式,您必须通过CLI重新创建模型:
sequelize model:create --name MyUser --attributes first_name:string,last_name:string,bio:text
它将生成以下文件:
型号/myuser.js:
"use strict";
module.exports = function(sequelize, DataTypes) {
var MyUser = sequelize.define("MyUser", {
first_name: DataTypes.STRING,
last_name: DataTypes.STRING,
bio: DataTypes.TEXT
}, {
classMethods: {
associate: function(models) {
// associations can be defined here
}
}
});
return MyUser;
};
如果不想从头创建模型,可以使用以下CLI命令手动生成迁移文件:
继续迁移:生成--name[name_of_your_migration]
这将生成一个空白框架迁移文件。虽然它不会将您的模型结构复制到文件中,但我确实发现它比重新生成所有内容更容易、更干净。注意:确保从迁移目录的包含目录运行命令;否则,CLI 将为您生成新的迁移目录
我正在使用MySQL构建一个新的NodeJS应用程序。我需要使用现有的数据库架构。我有一个加载到数据库中的 mysql 转储文件(在 docker 容器中)。我正在尝试自动生成模型和迁移,然后成功运行迁移。我能够生成模型和迁移,但是在运行生成的迁移时存在SQL语法错误。 以下是相关版本: 节点10阿尔卑斯山 我使用续集自动模块自动生成模型。这行得通。 然后,我尝试使用sequelize-auto-
问题内容: 我正在使用Alembic处理Flask的迁移。理论上,应该基于数据库中的更改自动生成迁移。但是,Alembic仅使用上述命令即可生成空白迁移。 有一个与此问题非常相似的问题,即问题是没有导入正确的模型。但是,我已经从我的Flask应用程序导入了模型,如下所示: 以及中导入的数据库元数据env.py(“ start”是我的Flask应用程序主文件的名称): 运行,alembic revi
问题内容: 嗨,我编写了这样的代码 但是我从DAO手动设置了它,例如“ e.setUserID(01);”。否则将不插入行是否有任何过程来获取ID值并检索自动生成的值。我想我会得到一些帮助 问题答案: 采用
我有2个文件,一个ecore实现元模型和一个电子存储库。电子存储库以EMF格式与ecore实现元模型一起提供。我想浏览这个存储库的内容,我所知道的是我必须从实现元模型生成一个Eclipse插件,通过这个插件,我可以打开存储库并浏览它的内容。但我不知道如何生成插件并继续它。 ecore实现元模型是使用Eclipse Indigo SR2中的EMF版本2.7开发的,e-Repository是在相同的环
如何使jooq自动生成器使用liquibase脚本运行,然后在Spring启动时迁移liquibase,而不是mvn干净编译? 我希望 jooq 自动生成器在 liquibase 模式上运行,然后我希望 liquibase 迁移在 spring 启动启动时运行,但目前它在运行 mvn 干净编译时运行。我希望像“获取的更改锁”这样的日志在应用程序启动后出现,而不是在 mvn 干净编译时出现。 这是p
本文向大家介绍如何使用mybatis-generator自动生成代码,包括了如何使用mybatis-generator自动生成代码的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了如何使用mybatis-generator自动生成代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1、在pom文件中添加mybatis-generator