自动创建迁移
作者: jgr3go创建于 2016年1月29日更新于 2026年5月3日
标签feature
我知道这一点以前已经讨论过,但如果续集能够根据续集和数据库的不同而自动地创建出迁移脚本,那会很有帮助。
(https://GitHub.com/sequelize/cli/compare/master.jgr3go:auto-migrate?expand=1) 我目前有一个试图解决这个问题的fork I'm testing out,我想再次展开讨论,以确保这能被续集/社区接受.
现在,为“将迁移顺序化:创建:自动”而制定的规则如下(注,这把续作 canon ,因此它将试图解决迁移问题,以便在数据库中建立一个符合续作输入的状态):
- 从新的 " 配置/模型.json " 读取模型.js文件,并将模型/栏下的定义导入续集。
- 从数据库中读取所有表格并导入模型/列定义
- 比较:
- 如果数据库中有一栏,而非再现器,则创建 " remove Column() " 迁移
- 如果在续集中存在一栏而不是数据库,则创建“addColumn()”迁移
- 如果数据库中有表格,而不是后继器,请打印出警告,除非有 " -- -- -- -- -- " 旗帜,在这种情况下,创建 " -- -- -- " 迁移
- 如果一个表格存在于续集中而不是数据库中,则什么都不做。 目前假定是续作. sync () 将会处理这个.
- 按文件名惯例跟踪自动移徙情况:XQTimestamp}-{model}-auto-{version},例如`20160129135511用户-auto-0002.js'。 如果有多个变化,它会将它们都连在一起,放在同一个模型文件中,相对于它们所影响的模型. 它也会清理所有尚未迁移到数据库的自动迁移文件.
这与Django's South的工作原理非常相近,但内容稍少了一点. 它(目前)不处理列修改,索引,关联等. 在我(或我想是其他人)继续开发之前,我想开始讨论一下,看看这是否值得追求,房主是否对此有任何犹豫.
内容来源: sequelize/cli