Fix for failed sql query during db dump (#9815)

This commit is contained in:
Tony Murray
2019-02-13 13:19:45 -06:00
committed by GitHub
parent 3f1489bd0f
commit 0b802d6571

View File

@@ -2454,18 +2454,20 @@ function dump_db_schema()
} }
} }
$create = dbFetchRow("SHOW CREATE TABLE `$table`")['Create Table']; $create = dbFetchRow("SHOW CREATE TABLE `$table`");
$constraint_regex = '/CONSTRAINT `(?<name>[A-Za-z_0-9]+)` FOREIGN KEY \(`(?<foreign_key>[A-Za-z_0-9]+)`\) REFERENCES `(?<table>[A-Za-z_0-9]+)` \(`(?<key>[A-Za-z_0-9]+)`\) ?(?<extra>[ A-Z]+)?/'; if (isset($create['Create Table'])) {
$constraint_count = preg_match_all($constraint_regex, $create, $constraints); $constraint_regex = '/CONSTRAINT `(?<name>[A-Za-z_0-9]+)` FOREIGN KEY \(`(?<foreign_key>[A-Za-z_0-9]+)`\) REFERENCES `(?<table>[A-Za-z_0-9]+)` \(`(?<key>[A-Za-z_0-9]+)`\) ?(?<extra>[ A-Z]+)?/';
for ($i = 0; $i < $constraint_count; $i++) { $constraint_count = preg_match_all($constraint_regex, $create['Create Table'], $constraints);
$constraint_name = $constraints['name'][$i]; for ($i = 0; $i < $constraint_count; $i++) {
$output[$table]['Constraints'][$constraint_name] = [ $constraint_name = $constraints['name'][$i];
'name' => $constraint_name, $output[$table]['Constraints'][$constraint_name] = [
'foreign_key' => $constraints['foreign_key'][$i], 'name' => $constraint_name,
'table' => $constraints['table'][$i], 'foreign_key' => $constraints['foreign_key'][$i],
'key' => $constraints['key'][$i], 'table' => $constraints['table'][$i],
'extra' => $constraints['extra'][$i], 'key' => $constraints['key'][$i],
]; 'extra' => $constraints['extra'][$i],
];
}
} }
} }