diff --git a/install.php b/install.php
index 1e4f32f9..aac6d01f 100644
--- a/install.php
+++ b/install.php
@@ -391,8 +391,16 @@ function move_data($old_dsn, $new_dsn, $old_data) {
if($tags) {
print("
Moving tags..");
- $new_db->Execute("DELETE FROM tags");
- $new_db->Execute("INSERT INTO tags(image_id, tag) VALUES (?, ?)", $tags);
+ $new_db->Execute("CREATE TABLE old_tags(image_id int, tag varchar(64))");
+ $new_db->Execute("DELETE FROM old_tags");
+ $new_db->Execute("INSERT INTO old_tags(image_id, tag) VALUES (?, ?)", $tags);
+
+ $database->Execute("DELETE FROM tags");
+ $database->Execute("INSERT INTO tags(tag) SELECT DISTINCT tag FROM old_tags");
+ $database->Execute("DELETE FROM image_tags");
+ $database->Execute("INSERT INTO image_tags(image_id, tag_id) SELECT old_tags.image_id, tags.id FROM old_tags JOIN tags ON old_tags.tag = tags.tag");
+ $database->Execute("UPDATE tags SET count=(SELECT COUNT(image_id) FROM image_tags WHERE tag_id=tags.id GROUP BY tag_id)");
+ $new_db->Execute("DROP TABLE tags_tmp");
}
print("
Moving files...");