diff --git a/src/Symfony/Component/Messenger/Transport/Doctrine/Connection.php b/src/Symfony/Component/Messenger/Transport/Doctrine/Connection.php index de6d144e45..e7a669a711 100644 --- a/src/Symfony/Component/Messenger/Transport/Doctrine/Connection.php +++ b/src/Symfony/Component/Messenger/Transport/Doctrine/Connection.php @@ -126,7 +126,7 @@ class Connection 'available_at' => '?', ]); - $this->executeQuery($queryBuilder->getSQL(), [ + $this->executeUpdate($queryBuilder->getSQL(), [ $body, json_encode($headers), $this->configuration['queue_name'], @@ -179,7 +179,7 @@ class Connection ->set('delivered_at', '?') ->where('id = ?'); $now = new \DateTime(); - $this->executeQuery($queryBuilder->getSQL(), [ + $this->executeUpdate($queryBuilder->getSQL(), [ $now, $doctrineEnvelope['id'], ], [ @@ -329,6 +329,25 @@ class Connection return $stmt; } + private function executeUpdate(string $sql, array $parameters = [], array $types = []) + { + try { + $stmt = $this->driverConnection->executeUpdate($sql, $parameters, $types); + } catch (TableNotFoundException $e) { + if ($this->driverConnection->isTransactionActive()) { + throw $e; + } + + // create table + if ($this->autoSetup) { + $this->setup(); + } + $stmt = $this->driverConnection->executeUpdate($sql, $parameters, $types); + } + + return $stmt; + } + private function getSchema(): Schema { $schema = new Schema([], [], $this->driverConnection->getSchemaManager()->createSchemaConfig());