Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 新数据库设置中的条令迁移_Symfony_Doctrine Orm_Migration - Fatal编程技术网

Symfony 新数据库设置中的条令迁移

Symfony 新数据库设置中的条令迁移,symfony,doctrine-orm,migration,Symfony,Doctrine Orm,Migration,我们使用条令迁移来保持应用程序数据库在不同版本之间的同步。该应用程序将在每次我们获得新客户时安装,这意味着每次安装都会有一个新的DB 现在,新数据库将在迁移文件中保留所有数据库更改,但将尝试执行迁移文件,因为它们未在迁移表中注册 处理这种情况的最佳方法是什么?正如我在评论中提到的,我已经成功地通过使用条令迁移创建了一个空白的数据库模式。我认为有必要先创建空数据库(php应用程序/控制台原则:database:create),然后运行迁移任务 我能想到的唯一一个潜在问题是,应用程序运行所需的任何基

我们使用条令迁移来保持应用程序数据库在不同版本之间的同步。该应用程序将在每次我们获得新客户时安装,这意味着每次安装都会有一个新的DB

现在,新数据库将在迁移文件中保留所有数据库更改,但将尝试执行迁移文件,因为它们未在迁移表中注册


处理这种情况的最佳方法是什么?

正如我在评论中提到的,我已经成功地通过使用条令迁移创建了一个空白的数据库模式。我认为有必要先创建空数据库(
php应用程序/控制台原则:database:create
),然后运行迁移任务

我能想到的唯一一个潜在问题是,应用程序运行所需的任何基础数据要么需要在迁移文件中,要么需要单独插入


顺便说一句,一次性运行所有迁移会发现一些小错误,而我在一次只执行一个迁移时就错过了这些错误。

我认为您可以选择第一个迁移类,复制它并在一秒钟前重命名

因此,如果您的第一个类是
2016060712284351
,您应该创建一个名为
2016060712284350
的新类。这样,它就在真正迁移之前执行

在这个新创建的类中,您可以通过创建所有需要的表来设置数据库。这样,当您运行迁移时,首先要做的是创建包含所有表的数据库,然后运行真正的迁移

不管怎么说,我不确定这是不是真正的方法。 更新数据库架构需要迁移,但如果要为每个用户创建新数据库,则每个新用户都将根据实体映射使用新架构。因此,不需要迁移


您只需要为旧用户的数据库运行迁移,对吗?

在新安装之后要填充当前架构,请使用以下命令:

  • 创建当前版本的新空chema

    /bin/console原则:模式:创建

  • 用当前版本填写迁移记录(不实际运行迁移-模式在第一个命令之后已经有当前版本)

    /bin/console原则:迁移:版本--add--all

  • 此命令添加迁移的记录,并且
    条令:迁移:状态
    将显示当前版本不需要迁移


    就这些

    有人否决了我的问题。。。我真的很想知道为什么我可以改进我的提问。如果你知道数据库的最后一个变化是什么,你可以手动插入所有版本号,或者同步一个数据库作为基本结构(迁移表中有所有版本)然后,对于iets客户端tun,运行附加脚本以更新基本db@acrobat谢谢你的评论。我正在寻找一些方法来自动化这个过程,以避免人为(me)故障:-)您可以使用迁移在新的空数据库中创建数据库架构吗?@StuBez-Hmm。。。这可能是一个解决方案。。。要在整个数据库创建过程中进行迁移,而不是使用条令:schema:create。。。一旦我尝试了这个想法,我会立即给出反馈。谢谢对于“基础数据”,您可以使用。也许此解决方案的一部分是在运行基础数据库的迁移脚本后加载装置?这听起来很有趣,也很简单。。。现在对我来说,这不再是一个问题,但一旦我有时间,我会调查一下,看看这是否可行。谢谢你,彼得。