diff options
author | Morris Jobke <hey@morrisjobke.de> | 2014-07-28 16:54:52 +0200 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2014-07-28 16:54:52 +0200 |
commit | 1fbbaed26149cd2261637e5a737b22089340345b (patch) | |
tree | 1bdd8863160d568d9ef97bffc660ff569bf09b21 | |
parent | cb0ff19dc4921a93f03b9c62934359968ec21b5b (diff) | |
parent | c87f425fe790b1f7958dd5a84a38f7dcef47c383 (diff) | |
download | nextcloud-server-1fbbaed26149cd2261637e5a737b22089340345b.tar.gz nextcloud-server-1fbbaed26149cd2261637e5a737b22089340345b.zip |
Merge pull request #9949 from owncloud/fixing-sqlite-migration-shared-hoster
generate copy of sqlite database file in data directory
-rw-r--r-- | lib/private/db/mdb2schemamanager.php | 3 | ||||
-rw-r--r-- | lib/private/db/sqlitemigrator.php | 26 |
2 files changed, 27 insertions, 2 deletions
diff --git a/lib/private/db/mdb2schemamanager.php b/lib/private/db/mdb2schemamanager.php index d3e379c9417..91e590a901a 100644 --- a/lib/private/db/mdb2schemamanager.php +++ b/lib/private/db/mdb2schemamanager.php @@ -59,7 +59,8 @@ class MDB2SchemaManager { public function getMigrator() { $platform = $this->conn->getDatabasePlatform(); if ($platform instanceof SqlitePlatform) { - return new SQLiteMigrator($this->conn); + $config = \OC::$server->getConfig(); + return new SQLiteMigrator($this->conn, $config); } else if ($platform instanceof OraclePlatform) { return new OracleMigrator($this->conn); } else if ($platform instanceof MySqlPlatform) { diff --git a/lib/private/db/sqlitemigrator.php b/lib/private/db/sqlitemigrator.php index f5f78986771..81bbcb567ea 100644 --- a/lib/private/db/sqlitemigrator.php +++ b/lib/private/db/sqlitemigrator.php @@ -11,6 +11,21 @@ namespace OC\DB; use Doctrine\DBAL\DBALException; class SQLiteMigrator extends Migrator { + + /** + * @var \OCP\IConfig + */ + private $config; + + /** + * @param \Doctrine\DBAL\Connection $connection + * @param \OCP\IConfig $config + */ + public function __construct(\Doctrine\DBAL\Connection $connection, \OCP\IConfig $config) { + parent::__construct($connection); + $this->config = $config; + } + /** * @param \Doctrine\DBAL\Schema\Schema $targetSchema * @throws \OC\DB\MigrationException @@ -19,7 +34,7 @@ class SQLiteMigrator extends Migrator { */ public function checkMigrate(\Doctrine\DBAL\Schema\Schema $targetSchema) { $dbFile = $this->connection->getDatabase(); - $tmpFile = \OC_Helper::tmpFile('.db'); + $tmpFile = $this->buildTempDatabase(); copy($dbFile, $tmpFile); $connectionParams = array( @@ -37,4 +52,13 @@ class SQLiteMigrator extends Migrator { throw new MigrationException('', $e->getMessage()); } } + + /** + * @return string + */ + private function buildTempDatabase() { + $dataDir = $this->config->getSystemValue("datadirectory", \OC::$SERVERROOT . '/data'); + $tmpFile = uniqid("oc_"); + return "$dataDir/$tmpFile.db"; + } } |