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:
blizzz 2021-01-11 18:07:11 +01:00 committed by GitHub
commit 7cdc7adf59
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 4 deletions

View File

@ -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();
}
}
/**

View File

@ -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;
}
}