Browse Source

Fixed error when executing update script multiple times #533

Tobias Reich 8 years ago
parent
commit
2ce58d2821
1 changed files with 29 additions and 4 deletions
  1. 29 4
      php/database/update_030102.php

+ 29 - 4
php/database/update_030102.php

@@ -10,36 +10,61 @@ use Lychee\Modules\Response;
 // Change type of the album id field
 $query  = Database::prepare($connection, "ALTER TABLE `?` CHANGE `album` `album` BIGINT UNSIGNED NOT NULL", array(LYCHEE_TABLE_PHOTOS));
 $result = Database::execute($connection, $query, 'update_030102', __LINE__);
+
 if ($result===false) Response::error('Could not change type of the album id field!');
 
 // Add index to the album id field
-$query  = Database::prepare($connection, "ALTER TABLE `?` ADD INDEX `Index_album` (`album`)", array(LYCHEE_TABLE_PHOTOS));
+$query  = Database::prepare($connection, "SHOW INDEX FROM `?` WHERE KEY_NAME = 'Index_album'", array(LYCHEE_TABLE_PHOTOS));
 $result = Database::execute($connection, $query, 'update_030102', __LINE__);
-if ($result===false) Response::error('Could not add index to the album id field!');
+
+if ($result===false) Response::error('Could not check if Index_album exists!');
+
+if ($result->num_rows===0) {
+
+	$query  = Database::prepare($connection, "ALTER TABLE `?` ADD INDEX `Index_album` (`album`)", array(LYCHEE_TABLE_PHOTOS));
+	$result = Database::execute($connection, $query, 'update_030102', __LINE__);
+
+	if ($result===false) Response::error('Could not add index to the album id field!');
+
+}
 
 // Add index to the star field
-$query  = Database::prepare($connection, "ALTER TABLE `?` ADD INDEX `Index_star` (`star`)", array(LYCHEE_TABLE_PHOTOS));
+$query  = Database::prepare($connection, "SHOW INDEX FROM `?` WHERE KEY_NAME = 'Index_star'", array(LYCHEE_TABLE_PHOTOS));
 $result = Database::execute($connection, $query, 'update_030102', __LINE__);
-if ($result===false) Response::error('Could not add index to the star field!');
+
+if ($result===false) Response::error('Could not check if Index_star exists!');
+
+if ($result->num_rows===0) {
+
+	$query  = Database::prepare($connection, "ALTER TABLE `?` ADD INDEX `Index_star` (`star`)", array(LYCHEE_TABLE_PHOTOS));
+	$result = Database::execute($connection, $query, 'update_030102', __LINE__);
+
+	if ($result===false) Response::error('Could not add index to the star field!');
+
+}
 
 // Change type of the checksum field
 $query  = Database::prepare($connection, "ALTER TABLE `?` CHANGE `checksum` `checksum` CHAR(40) NULL DEFAULT NULL", array(LYCHEE_TABLE_PHOTOS));
 $result = Database::execute($connection, $query, 'update_030102', __LINE__);
+
 if ($result===false) Response::error('Could not change type of the checksum field!');
 
 // Change type of the thumbUrl field
 $query  = Database::prepare($connection, "ALTER TABLE `?` CHANGE `thumbUrl` `thumbUrl` CHAR(37) NOT NULL", array(LYCHEE_TABLE_PHOTOS));
 $result = Database::execute($connection, $query, 'update_030102', __LINE__);
+
 if ($result===false) Response::error('Could not change type of the thumbUrl field!');
 
 // Change type of the id field
 $query  = Database::prepare($connection, "ALTER TABLE `?` CHANGE `id` `id` BIGINT(14) UNSIGNED NOT NULL", array(LYCHEE_TABLE_PHOTOS));
 $result = Database::execute($connection, $query, 'update_030102', __LINE__);
+
 if ($result===false) Response::error('Could not change type of the id field!');
 
 // Change type of the id field
 $query  = Database::prepare($connection, "ALTER TABLE `?` CHANGE `id` `id` BIGINT(14) UNSIGNED NOT NULL", array(LYCHEE_TABLE_ALBUMS));
 $result = Database::execute($connection, $query, 'update_030102', __LINE__);
+
 if ($result===false) Response::error('Could not change type of the id field!');
 
 // Set version