diff --git a/include/dbstructure.php b/include/dbstructure.php index e8f1738a7d..993ddad40f 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -398,6 +398,14 @@ function update_structure($verbose, $action, $tables=null, $definition=null) { $sql3 .= ";"; } + $field_list = ''; + if ($is_unique && $ignore == '') { + foreach ($structure['fields'] AS $fieldname => $parameters) { + $field_list .= 'ANY_VALUE(`' . $fieldname . '`),'; + } + $field_list = rtrim($field_list, ','); + } + if ($verbose) { // Ensure index conversion to unique removes duplicates if ($is_unique) { @@ -414,7 +422,7 @@ function update_structure($verbose, $action, $tables=null, $definition=null) { if ($ignore != "") { echo "SET session old_alter_table=0;\n"; } else { - echo "INSERT INTO `".$temp_name."` SELECT * FROM `".$name."`".$group_by.";\n"; + echo "INSERT INTO `".$temp_name."` SELECT ".$field_list." FROM `".$name."`".$group_by.";\n"; echo "DROP TABLE `".$name."`;\n"; echo "RENAME TABLE `".$temp_name."` TO `".$name."`;\n"; } @@ -445,7 +453,7 @@ function update_structure($verbose, $action, $tables=null, $definition=null) { if ($ignore != "") { $db->q("SET session old_alter_table=0;"); } else { - $r = $db->q("INSERT INTO `".$temp_name."` SELECT * FROM `".$name."`".$group_by.";"); + $r = $db->q("INSERT INTO `".$temp_name."` SELECT ".$field_list." FROM `".$name."`".$group_by.";"); if (!dbm::is_result($r)) { $errors .= print_update_error($db, $sql3); return $errors;