From 59a5eb430844132da3116ced5d89007e6980b2e4 Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Tue, 28 Mar 2017 18:14:32 +1300 Subject: [PATCH] FIX: Don't mistake \ for _ in dev/build The query SHOW TABLES LIKE 'some_thing' will match the table some\thing. This causes issues when the namespace separator has changed. The fix is to escape the _s in this LIKE statement, as done here. --- src/ORM/Connect/MySQLSchemaManager.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ORM/Connect/MySQLSchemaManager.php b/src/ORM/Connect/MySQLSchemaManager.php index 751e1a801..b45ddb055 100644 --- a/src/ORM/Connect/MySQLSchemaManager.php +++ b/src/ORM/Connect/MySQLSchemaManager.php @@ -185,7 +185,8 @@ class MySQLSchemaManager extends DBSchemaManager public function hasTable($table) { // MySQLi doesn't like parameterised queries for some queries - $sqlTable = $this->database->quoteString($table); + // underscores need to be escaped in a SHOW TABLES LIKE query + $sqlTable = str_replace('_', '\\_', $this->database->quoteString($table)); return (bool) ($this->query("SHOW TABLES LIKE $sqlTable")->value()); }