summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/db/migrator.php8
-rw-r--r--tests/lib/db/migrator.php21
2 files changed, 28 insertions, 1 deletions
diff --git a/lib/private/db/migrator.php b/lib/private/db/migrator.php
index 517be8399e8..8dbfabe443c 100644
--- a/lib/private/db/migrator.php
+++ b/lib/private/db/migrator.php
@@ -128,7 +128,13 @@ class Migrator {
$indexes = $table->getIndexes();
$newIndexes = array();
foreach ($indexes as $index) {
- $indexName = 'oc_' . uniqid(); // avoid conflicts in index names
+ if ($index->isPrimary()) {
+ // do not rename primary key
+ $indexName = $index->getName();
+ } else {
+ // avoid conflicts in index names
+ $indexName = 'oc_' . uniqid();
+ }
$newIndexes[] = new Index($indexName, $index->getColumns(), $index->isUnique(), $index->isPrimary());
}
diff --git a/tests/lib/db/migrator.php b/tests/lib/db/migrator.php
index e9b986236b8..e94d550f836 100644
--- a/tests/lib/db/migrator.php
+++ b/tests/lib/db/migrator.php
@@ -119,4 +119,25 @@ class Migrator extends \PHPUnit_Framework_TestCase {
$this->assertTrue(true);
}
}
+
+ public function testAddingPrimaryKeyWithAutoIncrement() {
+ $startSchema = new Schema(array(), array(), $this->getSchemaConfig());
+ $table = $startSchema->createTable($this->tableName);
+ $table->addColumn('id', 'integer');
+ $table->addColumn('name', 'string');
+
+ $endSchema = new Schema(array(), array(), $this->getSchemaConfig());
+ $table = $endSchema->createTable($this->tableName);
+ $table->addColumn('id', 'integer', array('autoincrement' => true));
+ $table->addColumn('name', 'string');
+ $table->setPrimaryKey(array('id'));
+
+ $migrator = $this->getMigrator();
+ $migrator->migrate($startSchema);
+
+ $migrator->checkMigrate($endSchema);
+ $migrator->migrate($endSchema);
+
+ $this->assertTrue(true);
+ }
}