Merge pull request #25038 from nextcloud/bugfix/noid/install-mysql8-with-php8
Don't try a transaction for the migrator on MySQL
This commit is contained in:
commit
7cdc7adf59
|
@ -32,6 +32,7 @@
|
|||
namespace OC\DB;
|
||||
|
||||
use Doctrine\DBAL\Exception;
|
||||
use Doctrine\DBAL\Platforms\MySQLPlatform;
|
||||
use Doctrine\DBAL\Schema\AbstractAsset;
|
||||
use Doctrine\DBAL\Schema\Comparator;
|
||||
use Doctrine\DBAL\Schema\Index;
|
||||
|
@ -238,14 +239,18 @@ class Migrator {
|
|||
|
||||
$schemaDiff = $this->getDiff($targetSchema, $connection);
|
||||
|
||||
$connection->beginTransaction();
|
||||
if (!$connection->getDatabasePlatform() instanceof MySQLPlatform) {
|
||||
$connection->beginTransaction();
|
||||
}
|
||||
$sqls = $schemaDiff->toSql($connection->getDatabasePlatform());
|
||||
$step = 0;
|
||||
foreach ($sqls as $sql) {
|
||||
$this->emit($sql, $step++, count($sqls));
|
||||
$connection->query($sql);
|
||||
}
|
||||
$connection->commit();
|
||||
if (!$connection->getDatabasePlatform() instanceof MySQLPlatform) {
|
||||
$connection->commit();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -10,7 +10,9 @@
|
|||
namespace Test\DB;
|
||||
|
||||
use Doctrine\DBAL\Exception;
|
||||
use Doctrine\DBAL\Platforms\MySQLPlatform;
|
||||
use Doctrine\DBAL\Platforms\OraclePlatform;
|
||||
use Doctrine\DBAL\Platforms\SqlitePlatform;
|
||||
use Doctrine\DBAL\Schema\Schema;
|
||||
use Doctrine\DBAL\Schema\SchemaConfig;
|
||||
use OC\DB\SchemaWrapper;
|
||||
|
@ -122,7 +124,11 @@ class MigratorTest extends \Test\TestCase {
|
|||
}
|
||||
|
||||
private function isSQLite() {
|
||||
return $this->connection->getDriver() instanceof \Doctrine\DBAL\Driver\PDOSqlite\Driver;
|
||||
return $this->connection->getDatabasePlatform() instanceof SqlitePlatform;
|
||||
}
|
||||
|
||||
private function isMySQL() {
|
||||
return $this->connection->getDatabasePlatform() instanceof MySQLPlatform;
|
||||
}
|
||||
|
||||
|
||||
|
@ -143,7 +149,9 @@ class MigratorTest extends \Test\TestCase {
|
|||
try {
|
||||
$migrator->migrate($endSchema);
|
||||
} catch (Exception\UniqueConstraintViolationException $e) {
|
||||
$this->connection->rollBack();
|
||||
if (!$this->isMySQL()) {
|
||||
$this->connection->rollBack();
|
||||
}
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue