diff --git a/lib/private/Files/Cache/Storage.php b/lib/private/Files/Cache/Storage.php index 8d99a268dc043..ae412ab34b110 100644 --- a/lib/private/Files/Cache/Storage.php +++ b/lib/private/Files/Cache/Storage.php @@ -7,6 +7,7 @@ */ namespace OC\Files\Cache; +use Doctrine\DBAL\Exception\UniqueConstraintViolationException; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\Files\Storage\IStorage; use OCP\IDBConnection; @@ -56,9 +57,16 @@ public function __construct($storage, $isAvailable, IDBConnection $connection) { $this->numericId = (int)$row['numeric_id']; } else { $available = $isAvailable ? 1 : 0; - if ($connection->insertIfNotExist('*PREFIX*storages', ['id' => $this->storageId, 'available' => $available])) { - $this->numericId = $connection->lastInsertId('*PREFIX*storages'); - } else { + $query = $connection->getQueryBuilder(); + $query->insert('storages') + ->values([ + 'id' => $query->createNamedParameter($this->storageId), + 'available' => $query->createNamedParameter($available, IQueryBuilder::PARAM_INT), + ]); + try { + $query->executeStatement(); + $this->numericId = $query->getLastInsertId(); + } catch (UniqueConstraintViolationException $e) { if ($row = self::getStorageById($this->storageId)) { $this->numericId = (int)$row['numeric_id']; } else {