【问题标题】:Migrate multiple databases with Symfony migrations, without specifying db name使用 Symfony 迁移迁移多个数据库,无需指定数据库名称
【发布时间】:2018-03-04 11:19:48
【问题描述】:

我的 Symfony 项目中有四个不同的数据库。这些数据库在本地都有各自的名称,因此在迁移中可以将它们区分开来。我在每次迁移中都为每个表添加了 db_name.table 前缀,以便迁移正确的数据库。

现在我想在自动生成数据库名称的远程服务器上进行设置(使用 flynn.io),但是数据库名称在所有迁移中都是固定的...有没有办法从中读取数据库名称环境变量或类似的解决方案?

【问题讨论】:

    标签: symfony doctrine doctrine-migrations flynn


    【解决方案1】:

    您可以使用DoctrineMigrationsBundle

    public function up(Schema $schema)
    {
        // ... empty function/ no migrations commands
    }
    
    
    public function postUp(Schema $schema)
    {
    
        // get datebase name here, and then pass this database names to another function
       $converter = $this->container->get('db_names_from_paratmers.yml file');
       $this->initDatabase('db1');
    }
    
    public function initDatabase($dbname)
    {
      $this->addSql('CREATE TABLE '.$dbname.'office (id INT AUTO_INCREMENT NOT NULL, email VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB');
    }
    

    看,如果这以某种方式满足您的需求,您只需要找到数据库名称并将其嵌入 paramters.yml 文件中。

    【讨论】:

      猜你喜欢
      • 2014-10-18
      • 1970-01-01
      • 2013-03-06
      • 1970-01-01
      • 2023-03-28
      • 2015-11-05
      • 2018-04-04
      • 2014-01-13
      • 2020-10-09
      相关资源
      最近更新 更多