diff --git a/lib/private/db/connectionfactory.php b/lib/private/db/connectionfactory.php
index 44b598dcda049224c7c4c54906b8e113f658721e..c488bf82d1f9b8915ef29660fcf0bcc198f13130 100644
--- a/lib/private/db/connectionfactory.php
+++ b/lib/private/db/connectionfactory.php
@@ -96,6 +96,7 @@ class ConnectionFactory {
 				break;
 			case 'sqlite3':
 				$journalMode = $additionalConnectionParams['sqlite.journal_mode'];
+				$additionalConnectionParams['platform'] = new SqlitePlatform();
 				$eventManager->addEventSubscriber(new SQLiteSessionInit(true, $journalMode));
 				break;
 		}
diff --git a/lib/private/db/sqliteplatform.php b/lib/private/db/sqliteplatform.php
new file mode 100644
index 0000000000000000000000000000000000000000..b2eec7dd7bfceb8fe2b32089710fb9e35ae8ab82
--- /dev/null
+++ b/lib/private/db/sqliteplatform.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC\DB;
+
+class SqlitePlatform extends \Doctrine\DBAL\Platforms\SqlitePlatform {
+	/**
+	 * {@inheritDoc}
+	 */
+	public function getColumnDeclarationSQL($name, array $field) {
+		$def = parent::getColumnDeclarationSQL($name, $field);
+		if (!empty($field['autoincrement'])) {
+			$def .= ' PRIMARY KEY AUTOINCREMENT';
+		}
+		return $def;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	protected function _getCreateTableSQL($name, array $columns, array $options = array()){
+		// if auto increment is set the column is already defined as primary key
+		foreach ($columns as $column) {
+			if (!empty($column['autoincrement'])) {
+				$options['primary'] = null;
+			}
+		}
+		return parent::_getCreateTableSQL($name, $columns, $options);
+	}
+}