doucheng2053 2018-08-21 06:05
浏览 38

如何在循环symfony中运行迁移命令?

Tried this in while loop:

 $command = array(
                'command' => 'doctrine:migrations:execute',
                '--em' => "dynamic",
                'version' => $this->container->getParameter('migration_version')
 );
 $kernel = $this->getContainer()->get('kernel');
 $application = new Application($kernel);
 $application->setAutoExit(false);
 $input = new ArrayInput($command);
 $output = new BufferedOutput();
 $result = $application->run($input, $output);
 $s=$output->fetch();

The error getting is:

Migration version 20171024105242 already registered with class Doctrine\DBAL\Migrations\Version

Please help me

public function switchDatabase($host, $user, $dbname)
    {
        //check the company database exist or not
        $password = getenv('DEFAULT_DB_PASSWORD');
        if (gettype($host) == 'resource') {
            $host = long2ip((int) stream_get_contents($host, -1, 0));
        }
        try {
            $conn = new PDO("mysql:host=" . $host . ";dbname=" . $dbname, $user, $password);

            // set the PDO error mode to exception
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            $conn = null;
        } catch (\PDOException $e) {
            return $e->getMessage();
        }
        // dynamic DB switch
        $connection = $this->getContainer()->get(sprintf('doctrine.dbal.%s_connection', 'dynamic'));
        $connection->close();
        $refConn = new \ReflectionObject($connection);
        $refParams = $refConn->getProperty('_params');
        $refParams->setAccessible('public'); //we have to change it for a moment
        $params = $refParams->getValue($connection);
        $params['dbname'] = $dbname;
        $params['host'] = $host;
        $params['user'] = $user;
        $refParams->setAccessible('private');
        $refParams->setValue($connection, $params);
        $this->getContainer()->get('doctrine')->resetEntityManager('dynamic');

        return true;
    }

This is the code used for db switching db switching is working fine. but the above error comes after 2nd migration in loop

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 基于卷积神经网络的声纹识别
    • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
    • ¥100 为什么这个恒流源电路不能恒流?
    • ¥15 有偿求跨组件数据流路径图
    • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
    • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
    • ¥15 CSAPPattacklab
    • ¥15 一直显示正在等待HID—ISP
    • ¥15 Python turtle 画图
    • ¥15 stm32开发clion时遇到的编译问题