From f57e334f8395e3b5c046b6d28480d798453e4866 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Tue, 4 Dec 2018 18:34:23 +0100 Subject: Fix bigint conversion on SQLite * on SQLite primary keys can't be bigint - see https://stackoverflow.com/a/18835967/520507 Signed-off-by: Morris Jobke --- core/Command/Db/ConvertFilecacheBigInt.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'core/Command/Db') diff --git a/core/Command/Db/ConvertFilecacheBigInt.php b/core/Command/Db/ConvertFilecacheBigInt.php index eab64660ac4..a1e3ba69f98 100644 --- a/core/Command/Db/ConvertFilecacheBigInt.php +++ b/core/Command/Db/ConvertFilecacheBigInt.php @@ -23,6 +23,7 @@ namespace OC\Core\Command\Db; +use Doctrine\DBAL\Platforms\SqlitePlatform; use Doctrine\DBAL\Types\Type; use OC\DB\SchemaWrapper; use OCP\IDBConnection; @@ -63,6 +64,7 @@ class ConvertFilecacheBigInt extends Command { protected function execute(InputInterface $input, OutputInterface $output) { $schema = new SchemaWrapper($this->connection); + $isSqlite = $this->connection->getDatabasePlatform() instanceof SqlitePlatform; $updates = []; $tables = $this->getColumnsByTable(); @@ -75,7 +77,9 @@ class ConvertFilecacheBigInt extends Command { foreach ($columns as $columnName) { $column = $table->getColumn($columnName); - if ($column->getType()->getName() !== Type::BIGINT) { + $isAutoIncrement = $column->getAutoincrement(); + $isAutoIncrementOnSqlite = $isSqlite && $isAutoIncrement; + if ($column->getType()->getName() !== Type::BIGINT && !$isAutoIncrementOnSqlite) { $column->setType(Type::getType(Type::BIGINT)); $column->setOptions(['length' => 20]); -- cgit v1.2.3