我正在使用doctrine:migrations:diff来准备数据库演变。
此命令将文件创建到app / DoctrineMigrations中 Thoses文件包含sql命令,以便升级或降级数据库结构。
我想将这些sql命令存储到数据库本身。事实上,我有几个数据库实例。如果sql命令存储到文件中,那么这是一个很大的问题。
我在某处读过DoctrineMigrations捆绑包可以创建一个名为“migration_versions”的表,但是我无法找到我在哪里读到这个...
答案 0 :(得分:2)
我无法理解你想要做什么。
当您的代码需要更改数据库结构时,将使用迁移。例如,新表或新列。对表或列的这些新要求来自您新编写的代码,因此将迁移也作为代码存储在存储库中是很自然的。
迁移如何以及何时进入您的数据库?您如何保证在代码更改之前执行迁移(使用该新结构?
)通常,迁移以这种方式使用:
UPDATE
语句用于迁移数据,而不仅仅是结构。然后是部署部分: - 对于每个服务器,上传代码,清除和预热缓存,运行其他安装脚本。然后运行迁移。然后才切换到新代码。
这样,您的数据库始终与使用该数据库的服务器中的当前代码同步。
migration_versions
数据库表由doctrine迁移自动创建。它只包含迁移类的版本号 - 它用于跟踪哪些迁移已经运行,哪些迁移没有。
这样,当您运行doctrine:migrations:migrate
时,将执行所有尚未运行的迁移。这允许一次迁移少量提交,在提交中进行多次迁移等。