Don't use transactions for statements with implicit commit
[MAILPOET-3926]
This commit is contained in:
committed by
Veljko V
parent
c0c9b11c54
commit
386f0c66b4
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
namespace MailPoet\Doctrine;
|
namespace MailPoet\Doctrine;
|
||||||
|
|
||||||
use MailPoetVendor\Doctrine\DBAL\Connection;
|
|
||||||
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
||||||
use MailPoetVendor\Doctrine\ORM\EntityRepository as DoctrineEntityRepository;
|
use MailPoetVendor\Doctrine\ORM\EntityRepository as DoctrineEntityRepository;
|
||||||
use MailPoetVendor\Doctrine\ORM\Mapping\ClassMetadata;
|
use MailPoetVendor\Doctrine\ORM\Mapping\ClassMetadata;
|
||||||
@ -76,12 +75,10 @@ abstract class Repository {
|
|||||||
$cmd = $this->entityManager->getClassMetadata($this->getEntityClassName());
|
$cmd = $this->entityManager->getClassMetadata($this->getEntityClassName());
|
||||||
$tableName = $cmd->getTableName();
|
$tableName = $cmd->getTableName();
|
||||||
$connection = $this->entityManager->getConnection();
|
$connection = $this->entityManager->getConnection();
|
||||||
$connection->transactional(function(Connection $connection) use ($tableName) {
|
$connection->query('SET FOREIGN_KEY_CHECKS=0');
|
||||||
$connection->query('SET FOREIGN_KEY_CHECKS=0');
|
$q = "TRUNCATE $tableName";
|
||||||
$q = "TRUNCATE $tableName";
|
$connection->executeUpdate($q);
|
||||||
$connection->executeUpdate($q);
|
$connection->query('SET FOREIGN_KEY_CHECKS=1');
|
||||||
$connection->query('SET FOREIGN_KEY_CHECKS=1');
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -59,11 +59,9 @@ array_map($destroy, $models);
|
|||||||
$entityManager = ContainerWrapper::getInstance(WP_DEBUG)->get(EntityManager::class);
|
$entityManager = ContainerWrapper::getInstance(WP_DEBUG)->get(EntityManager::class);
|
||||||
foreach ($entities as $entity) {
|
foreach ($entities as $entity) {
|
||||||
$tableName = $entityManager->getClassMetadata($entity)->getTableName();
|
$tableName = $entityManager->getClassMetadata($entity)->getTableName();
|
||||||
$connection->transactional(function(Connection $connection) use ($tableName) {
|
$connection->query('SET FOREIGN_KEY_CHECKS=0');
|
||||||
$connection->query('SET FOREIGN_KEY_CHECKS=0');
|
$connection->executeUpdate("TRUNCATE $tableName");
|
||||||
$connection->executeUpdate("TRUNCATE $tableName");
|
$connection->query('SET FOREIGN_KEY_CHECKS=1');
|
||||||
$connection->query('SET FOREIGN_KEY_CHECKS=1');
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// save plugin version to avoid running migrations (that cause $GLOBALS serialization errors)
|
// save plugin version to avoid running migrations (that cause $GLOBALS serialization errors)
|
||||||
@ -218,11 +216,9 @@ abstract class MailPoetTest extends \Codeception\TestCase\Test { // phpcs:ignore
|
|||||||
$classMetadata = $this->entityManager->getClassMetadata($entityName);
|
$classMetadata = $this->entityManager->getClassMetadata($entityName);
|
||||||
$tableName = $classMetadata->getTableName();
|
$tableName = $classMetadata->getTableName();
|
||||||
$connection = $this->entityManager->getConnection();
|
$connection = $this->entityManager->getConnection();
|
||||||
$connection->transactional(function(Connection $connection) use ($tableName) {
|
$connection->query('SET FOREIGN_KEY_CHECKS=0');
|
||||||
$connection->query('SET FOREIGN_KEY_CHECKS=0');
|
$connection->executeUpdate("TRUNCATE $tableName");
|
||||||
$connection->executeUpdate("TRUNCATE $tableName");
|
$connection->query('SET FOREIGN_KEY_CHECKS=1');
|
||||||
$connection->query('SET FOREIGN_KEY_CHECKS=1');
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user