Fixes #13814: MySQL unique index names can now contain spaces

This commit is contained in:
Chris Harris
2018-01-21 13:27:58 -08:00
committed by Alexander Makarov
parent 940377ce56
commit a2a79a70eb
3 changed files with 14 additions and 3 deletions

View File

@ -447,11 +447,11 @@ SQL;
$sql = $this->getCreateTableSql($table);
$uniqueIndexes = [];
$regexp = '/UNIQUE KEY\s+([^\(\s]+)\s*\(([^\(\)]+)\)/mi';
$regexp = '/UNIQUE KEY\s+\`(.+)\`\s*\((\`.+\`)+\)/mi';
if (preg_match_all($regexp, $sql, $matches, PREG_SET_ORDER)) {
foreach ($matches as $match) {
$indexName = str_replace('`', '', $match[1]);
$indexColumns = array_map('trim', explode(',', str_replace('`', '', $match[2])));
$indexName = $match[1];
$indexColumns = array_map('trim', explode('`,`', trim($match[2], '`')));
$uniqueIndexes[$indexName] = $indexColumns;
}
}