diff options
author | blizzz <blizzz@arthur-schiwon.de> | 2021-01-11 18:07:11 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-11 18:07:11 +0100 |
commit | 7cdc7adf59a053407f06ccf3a3d0d94e667c833b (patch) | |
tree | 424873b7658a036eccbc960e10d66633cea613dc | |
parent | fdd111924fc38aebd23ca2db9ecebfc4480eb026 (diff) | |
parent | 2d34ca4143f6ddeb2e0be8d6bca99469a5d08792 (diff) | |
download | nextcloud-server-7cdc7adf59a053407f06ccf3a3d0d94e667c833b.tar.gz nextcloud-server-7cdc7adf59a053407f06ccf3a3d0d94e667c833b.zip |
Merge pull request #25038 from nextcloud/bugfix/noid/install-mysql8-with-php8
Don't try a transaction for the migrator on MySQL
-rw-r--r-- | lib/private/DB/Migrator.php | 9 | ||||
-rw-r--r-- | tests/lib/DB/MigratorTest.php | 12 |
2 files changed, 17 insertions, 4 deletions
diff --git a/lib/private/DB/Migrator.php b/lib/private/DB/Migrator.php index f62735ea6b2..e50927f620b 100644 --- a/lib/private/DB/Migrator.php +++ b/lib/private/DB/Migrator.php @@ -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(); + } } /** diff --git a/tests/lib/DB/MigratorTest.php b/tests/lib/DB/MigratorTest.php index 539eb404bbf..6f3ebbb2b0c 100644 --- a/tests/lib/DB/MigratorTest.php +++ b/tests/lib/DB/MigratorTest.php @@ -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; } } |