]> git.mxchange.org Git - friendica.git/commitdiff
DBStructure: Better handling of temp table
authorMichael <heluecht@pirati.ca>
Sat, 21 Oct 2017 14:29:55 +0000 (14:29 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 21 Oct 2017 14:29:55 +0000 (14:29 +0000)
include/dbstructure.php

index fd2192665ca9886a917e75c07aaf7def6888f97c..2e47111c2ef870fbc963b94599bd01f314eed1ae 100644 (file)
@@ -412,17 +412,18 @@ function update_structure($verbose, $action, $tables=null, $definition=null) {
 
                        if ($verbose) {
                                // Ensure index conversion to unique removes duplicates
-                               if ($is_unique) {
+                               if ($is_unique && ($temp_name != $name)) {
                                        if ($ignore != "") {
                                                echo "SET session old_alter_table=1;\n";
                                        } else {
+                                               echo "DROP TABLE IF EXISTS `".$temp_name."`;\n";
                                                echo "CREATE TABLE `".$temp_name."` LIKE `".$name."`;\n";
                                        }
                                }
 
                                echo $sql3."\n";
 
-                               if ($is_unique) {
+                               if ($is_unique && ($temp_name != $name)) {
                                        if ($ignore != "") {
                                                echo "SET session old_alter_table=0;\n";
                                        } else {
@@ -437,10 +438,16 @@ function update_structure($verbose, $action, $tables=null, $definition=null) {
                                Config::set('system', 'maintenance_reason', sprintf(t('%s: updating %s table.'), dbm::date().' '.date('e'), $name));
 
                                // Ensure index conversion to unique removes duplicates
-                               if ($is_unique) {
+                               if ($is_unique && ($temp_name != $name)) {
                                        if ($ignore != "") {
                                                dba::e("SET session old_alter_table=1;");
                                        } else {
+                                               dba::e("DROP TABLE IF EXISTS `".$temp_name."`;");
+                                               if (!dbm::is_result($r)) {
+                                                       $errors .= print_update_error($sql3);
+                                                       return $errors;
+                                               }
+
                                                $r = dba::e("CREATE TABLE `".$temp_name."` LIKE `".$name."`;");
                                                if (!dbm::is_result($r)) {
                                                        $errors .= print_update_error($sql3);
@@ -453,7 +460,7 @@ function update_structure($verbose, $action, $tables=null, $definition=null) {
                                if (!dbm::is_result($r)) {
                                        $errors .= print_update_error($sql3);
                                }
-                               if ($is_unique) {
+                               if ($is_unique && ($temp_name != $name)) {
                                        if ($ignore != "") {
                                                dba::e("SET session old_alter_table=0;");
                                        } else {