Don't use double quotes in MySQL queries

MySQL databases with the ANSI_QUOTES mode enabled treat " as an identifier
quote (see https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_ansi_quotes).
So for such databases the 'occ upgrade' fails with an error message like this:
... unknown column 'oc_*' in where clause.

This fix replaces the doulbe quotes with single quotes that should be always
used in MySQL queries to quote literal strings.

Signed-off-by: Robin Müller <robin.mueller@1und1.de>
This commit is contained in:
Robin Müller 2018-02-16 09:27:16 +01:00 committed by Roeland Jago Douma
parent ff7237a098
commit 619ee56835
No known key found for this signature in database
GPG Key ID: F941078878347C0C
1 changed files with 3 additions and 2 deletions

View File

@ -6,6 +6,7 @@
* @author Morris Jobke <hey@morrisjobke.de> * @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl> * @author Robin Appelman <robin@icewind.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu> * @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Robin Müller <robin.mueller@1und1.de>
* *
* @license AGPL-3.0 * @license AGPL-3.0
* *
@ -124,7 +125,7 @@ class Collation implements IRepairStep {
" FROM INFORMATION_SCHEMA . COLUMNS" . " FROM INFORMATION_SCHEMA . COLUMNS" .
" WHERE TABLE_SCHEMA = ?" . " WHERE TABLE_SCHEMA = ?" .
" AND (COLLATION_NAME <> '" . $characterSet . "_bin' OR CHARACTER_SET_NAME <> '" . $characterSet . "')" . " AND (COLLATION_NAME <> '" . $characterSet . "_bin' OR CHARACTER_SET_NAME <> '" . $characterSet . "')" .
" AND TABLE_NAME LIKE \"*PREFIX*%\"", " AND TABLE_NAME LIKE '*PREFIX*%'",
array($dbName) array($dbName)
); );
$rows = $statement->fetchAll(); $rows = $statement->fetchAll();
@ -139,7 +140,7 @@ class Collation implements IRepairStep {
" FROM INFORMATION_SCHEMA . TABLES" . " FROM INFORMATION_SCHEMA . TABLES" .
" WHERE TABLE_SCHEMA = ?" . " WHERE TABLE_SCHEMA = ?" .
" AND TABLE_COLLATION <> '" . $characterSet . "_bin'" . " AND TABLE_COLLATION <> '" . $characterSet . "_bin'" .
" AND TABLE_NAME LIKE \"*PREFIX*%\"", " AND TABLE_NAME LIKE '*PREFIX*%'",
[$dbName] [$dbName]
); );
$rows = $statement->fetchAll(); $rows = $statement->fetchAll();