mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2025-03-31 02:20:22 +02:00
database compare bugfix keys
This commit is contained in:
parent
1351def3bd
commit
d31c7a8961
@ -219,7 +219,9 @@ if ($argc > 1) {
|
|||||||
echo("--------------- Calculating database upgrade for '$schema@$host'... ---------------\n");
|
echo("--------------- Calculating database upgrade for '$schema@$host'... ---------------\n");
|
||||||
|
|
||||||
$upgrade_sql = array();
|
$upgrade_sql = array();
|
||||||
$upgrade_sql[] = ("SET SQL_MODE='ALLOW_INVALID_DATES';");
|
if (count($compare_differences) > 0) {
|
||||||
|
$upgrade_sql[] = ("SET SQL_MODE='ALLOW_INVALID_DATES';");
|
||||||
|
}
|
||||||
|
|
||||||
$compare_differences = compare_table_array($compare_def,"in JSON",$db_def,"in DB",true);
|
$compare_differences = compare_table_array($compare_def,"in JSON",$db_def,"in DB",true);
|
||||||
|
|
||||||
@ -384,7 +386,7 @@ if ($argc > 1) {
|
|||||||
|
|
||||||
$query_result = mysqli_query($mysqli, $sql);
|
$query_result = mysqli_query($mysqli, $sql);
|
||||||
if (!$query_result) {
|
if (!$query_result) {
|
||||||
$error = " not ok: ". mysqli_error($mysqli)."\n");
|
$error = " not ok: ". mysqli_error($mysqli)."\n";
|
||||||
echo($error);
|
echo($error);
|
||||||
file_put_contents("./errors.txt",$error.$sql."\n",FILE_APPEND);
|
file_put_contents("./errors.txt",$error.$sql."\n",FILE_APPEND);
|
||||||
$error_counter++;
|
$error_counter++;
|
||||||
@ -452,49 +454,48 @@ function load_tables_from_db(string $host, string $schema, string $user, string
|
|||||||
// Do some harmonization
|
// Do some harmonization
|
||||||
sql_replace_reserved_functions($column,$replacers);
|
sql_replace_reserved_functions($column,$replacers);
|
||||||
$columns[] = $column; // Add column to list of columns
|
$columns[] = $column; // Add column to list of columns
|
||||||
}
|
}
|
||||||
$table['columns'] = $columns;
|
$table['columns'] = $columns;
|
||||||
|
|
||||||
$sql = "SHOW KEYS FROM ".$table['name'];
|
$sql = "SHOW KEYS FROM ".$table['name'];
|
||||||
$query_result = mysqli_query($mysqli, $sql);
|
$query_result = mysqli_query($mysqli, $sql);
|
||||||
if (!$query_result) {
|
if (!$query_result) {
|
||||||
return(array());
|
return(array());
|
||||||
}
|
}
|
||||||
$keys = array();
|
$keys = array();
|
||||||
while ($key = mysqli_fetch_assoc($query_result)) {
|
while ($key = mysqli_fetch_assoc($query_result)) {
|
||||||
$keys[] = $key; // Add key to list of keys
|
$keys[] = $key; // Add key to list of keys
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compose comparable format for keys
|
// Compose comparable format for keys
|
||||||
|
$composed_keys = array();
|
||||||
|
foreach ($keys as $key) {
|
||||||
|
|
||||||
$refined_keys = array();
|
// Check if this key exists already
|
||||||
|
|
||||||
foreach ($keys as &$key) {
|
$key_pos = array_search($key['Key_name'],array_column($composed_keys,'Key_name'));
|
||||||
|
|
||||||
$key_pos = array_search($key['Key_name'],array_column($refined_keys,'Key_name'),true);
|
if ($key_pos == false) {
|
||||||
|
// New key
|
||||||
if ($key_pos !== false) {
|
$composed_key = array();
|
||||||
$refined_key = &$refined_keys[$key_pos];
|
$composed_key['Key_name'] = $key['Key_name'];
|
||||||
$refined_key['columns'] = $refined_key['columns'].", ".$key['Column_name'];
|
$composed_key['columns'] = $key['Column_name'];
|
||||||
|
$composed_keys[] = $composed_key;
|
||||||
} else {
|
} else {
|
||||||
$refined_key['Key_name'] = $key['Key_name'];
|
// Given key, add column
|
||||||
$refined_key['Non_unique'] = $key['Non_unique'];
|
$composed_keys[$key_pos]['columns'] .= ",".$key['Column_name'];
|
||||||
$refined_key['columns'] = $key['Column_name'];
|
|
||||||
$refined_keys[] = $refined_key;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
unset($key);
|
unset($key);
|
||||||
$table['keys'] = $refined_keys;
|
$table['keys'] = $composed_keys;
|
||||||
|
unset($composed_keys);
|
||||||
}
|
}
|
||||||
unset($table);
|
unset($table);
|
||||||
|
|
||||||
$result = array();
|
$result = array();
|
||||||
$result['host'] = $host;
|
$result['host'] = $host;
|
||||||
$result['database'] = $schema;
|
$result['database'] = $schema;
|
||||||
$result['user'] = $user;
|
$result['user'] = $user;
|
||||||
$result['tables'] = $tables;
|
$result['tables'] = $tables;
|
||||||
|
|
||||||
return($result);
|
return($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user