summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorblizzz <blizzz@arthur-schiwon.de>2021-01-11 18:07:11 +0100
committerGitHub <noreply@github.com>2021-01-11 18:07:11 +0100
commit7cdc7adf59a053407f06ccf3a3d0d94e667c833b (patch)
tree424873b7658a036eccbc960e10d66633cea613dc
parentfdd111924fc38aebd23ca2db9ecebfc4480eb026 (diff)
parent2d34ca4143f6ddeb2e0be8d6bca99469a5d08792 (diff)
downloadnextcloud-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.php9
-rw-r--r--tests/lib/DB/MigratorTest.php12
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;
}
}