After upgrading HHVM from 3.18.2 to 3.19.1, MW 1.28.1 update script (I did git pull and composer update) fails with the following error:
Fatal error: Uncaught TypeError: Argument 1 passed to mysql_real_escape_string() must be an instance of string, int given in /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqli.php:314 Stack trace: #0 (): mysql_real_escape_string() #1 /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqli.php(314): mysqli->real_escape_string() #2 /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqlBase.php(602): DatabaseMysqli->mysqlRealEscapeString() #3 /var/www/wiki/w/includes/libs/rdbms/database/Database.php(1985): DatabaseMysqlBase->strencode() #4 /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqlBase.php(618): Database->addQuotes() #5 /var/www/wiki/w/includes/libs/rdbms/database/Database.php(1621): DatabaseMysqlBase->addQuotes() #6 /var/www/wiki/w/includes/libs/rdbms/database/Database.php(2159): Database->makeList() #7 /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqlBase.php(486): Database->nativeReplace() #8 /var/www/wiki/w/extensions/SemanticMediaWiki/src/SQLStore/TableIntegrityExaminer.php(154): DatabaseMysqlBase->replace() #9 /var/www/wiki/w/extensions/SemanticMediaWiki/src/SQLStore/TableIntegrityExaminer.php(84): SMW\SQLStore\TableIntegrityExaminer->doCheckPredefinedPropertyIndices() #10 /var/www/wiki/w/extensions/SemanticMediaWiki/src/SQLStore/Installer.php(115): SMW\SQLStore\TableIntegrityExaminer->checkOnPostCreation() #11 /var/www/wiki/w/extensions/SemanticMediaWiki/includes/storage/SQLStore/SMW_SQLStore3.php(376): SMW\SQLStore\Installer->install() #12 /var/www/wiki/w/extensions/SemanticMediaWiki/includes/storage/SMW_Store.php(439): SMWSQLStore3->setup() #13 /var/www/wiki/w/includes/installer/DatabaseUpdater.php(472): SMW\Store::setupStore() #14 /var/www/wiki/w/includes/installer/DatabaseUpdater.php(437): DatabaseUpdater->runUpdates() #15 /var/www/wiki/w/maintenance/update.php(172): DatabaseUpdater->doUpdates() #16 /var/www/wiki/w/maintenance/doMaintenance.php(111): UpdateMediaWiki->execute() #17 /var/www/wiki/w/maintenance/update.php(217): include() #18 {main} [2314eb5536b4b8f0d66f4bd6] [no req] __SystemLib\TypeError from line 314 of /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqli.php: Argument 1 passed to mysql_real_escape_string() must be an instance of string, int given Backtrace: #0 [internal function]: mysql_real_escape_string(integer, resource) #1 /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqli.php(314): mysqli->real_escape_string(integer) #2 /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqlBase.php(602): DatabaseMysqli->mysqlRealEscapeString(integer) #3 /var/www/wiki/w/includes/libs/rdbms/database/Database.php(1985): DatabaseMysqlBase->strencode(integer) #4 /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqlBase.php(618): Database->addQuotes(integer) #5 /var/www/wiki/w/includes/libs/rdbms/database/Database.php(1621): DatabaseMysqlBase->addQuotes(integer) #6 /var/www/wiki/w/includes/libs/rdbms/database/Database.php(2159): Database->makeList(array) #7 /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqlBase.php(486): Database->nativeReplace(string, array, string) #8 /var/www/wiki/w/extensions/SemanticMediaWiki/src/SQLStore/TableIntegrityExaminer.php(154): DatabaseMysqlBase->replace(string, array, array, string) #9 /var/www/wiki/w/extensions/SemanticMediaWiki/src/SQLStore/TableIntegrityExaminer.php(84): SMW\SQLStore\TableIntegrityExaminer->doCheckPredefinedPropertyIndices(DatabaseMysqli) #10 /var/www/wiki/w/extensions/SemanticMediaWiki/src/SQLStore/Installer.php(115): SMW\SQLStore\TableIntegrityExaminer->checkOnPostCreation(SMW\SQLStore\TableBuilder\MySQLTableBuilder) #11 /var/www/wiki/w/extensions/SemanticMediaWiki/includes/storage/SQLStore/SMW_SQLStore3.php(376): SMW\SQLStore\Installer->install(MysqlUpdater) #12 /var/www/wiki/w/extensions/SemanticMediaWiki/includes/storage/SMW_Store.php(439): SMWSQLStore3->setup(MysqlUpdater) #13 /var/www/wiki/w/includes/installer/DatabaseUpdater.php(472): SMW\Store::setupStore(MysqlUpdater, array) #14 /var/www/wiki/w/includes/installer/DatabaseUpdater.php(437): DatabaseUpdater->runUpdates(array, boolean) #15 /var/www/wiki/w/maintenance/update.php(172): DatabaseUpdater->doUpdates(array) #16 /var/www/wiki/w/maintenance/doMaintenance.php(111): UpdateMediaWiki->execute() #17 /var/www/wiki/w/maintenance/update.php(217): include(string) #18 {main}
The same error with mysql_real_escape_string() happened before the update script when I simply tried to access the wiki with the following in /var/log/hhvm/error.log:
Fatal error: Uncaught TypeError: Argument 1 passed to mysql_real_escape_string() must be an instance of string, int given in /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqli.php:314 Stack trace: #0 (): mysql_real_escape_string()\n#1 /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqli.php(314): mysqli->real_escape_string() #2 /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqlBase.php(602): DatabaseMysqli->mysqlRealEscapeString() #3 /var/www/wiki/w/includes/libs/rdbms/database/Database.php(1971): DatabaseMysqlBase->strencode() #4 /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqlBase.php(618): Database->addQuotes() $5 /var/www/wiki/w/includes/libs/rdbms/database/Database.php(1618): DatabaseMysqlBase->addQuotes() #6 /var/www/wiki/w/includes/libs/rdbms/database/Database.php(1296): Database->makeList() #7 /var/www/wiki/w/includes/libs/rdbms/database/Database.php(1252): Database->selectSQLText() #8 /var/www/wiki/w/includes/cache/MessageCache.php(480): Database->select() #9 /var/www/wiki/w/includes/cache/MessageCache.php(403): MessageCache->loadFromDB() #10 /var/www/wiki/w/includes/cache/MessageCache.php(325): MessageCache->loadFromDBWithLock() #11 /var/www/wiki/w/includes/cache/MessageCache.php(927): MessageCache->load() #12 /var/www/wiki/w/includes/cache/MessageCache.php(858): MessageCache->getMsgFromNamespace() #13 /var/www/wiki/w/includes/cache/MessageCache.php(826): MessageCache->getMessageForLang() #14 /var/www/wiki/w/includes/cache/MessageCache.php(767): MessageCache->getMessageFromFallbackChain() #15 /var/www/wiki/w/includes/Message.php(1188): MessageCache->get() #16 /var/www/wiki/w/includes/Message.php(950): Message->fetchMessage() #17 /var/www/wiki/w/extensions/Gadgets/includes/MediaWikiGadgetsDefinitionRepo.php(113): Message->exists() #18 /var/www/wiki/w/extensions/Gadgets/includes/MediaWikiGadgetsDefinitionRepo.php(83): MediaWikiGadgetsDefinitionRepo->fetchStructuredList() #19 /var/www/wiki/w/includes/libs/objectcache/WANObjectCache.php(1004): Closure$MediaWikiGadgetsDefinitionRepo::loadGadgets() #20 /var/www/wiki/w/includes/libs/objectcache/WANObjectCache.php(906): WANObjectCache->doGetWithSetCallback() #21 /var/www/wiki/w/extensions/Gadgets/includes/MediaWikiGadgetsDefinitionRepo.php(91): WANObjectCache->getWithSetCallback() #22 /var/www/wiki/w/extensions/Gadgets/includes/MediaWikiGadgetsDefinitionRepo.php(23): MediaWikiGadgetsDefinitionRepo->loadGadgets() #23 /var/www/wiki/w/extensions/Gadgets/includes/GadgetRepo.php(36): MediaWikiGadgetsDefinitionRepo->getGadgetIds() #24 /var/www/wiki/w/extensions/Gadgets/GadgetHooks.php(52): GadgetRepo->getStructuredList() #25 /var/www/wiki/w/includes/Hooks.php(195): GadgetHooks::userGetDefaultOptions() #26 /var/www/wiki/w/includes/user/User.php(1552): Hooks::run() #27 /var/www/wiki/w/includes/user/User.php(5131): User::getDefaultOptions() #28 /var/www/wiki/w/includes/user/User.php(2768): User->loadOptions() #29 /var/www/wiki/w/includes/context/RequestContext.php(423): User->getOption() #30 /var/www/wiki/w/includes/context/ContextSource.php(153): RequestContext->getSkin() #31 /var/www/wiki/w/extensions/MobileFrontend/includes/MobileFrontend.hooks.php(587): ContextSource->getSkin() #32 /var/www/wiki/w/includes/Hooks.php(195): MobileFrontendHooks::onSpecialPageBeforeExecute() #33 /var/www/wiki/w/includes/specialpage/SpecialPage.php(515): Hooks::run() #34 /var/www/wiki/w/includes/specialpage/SpecialPageFactory.php(576): SpecialPage->run() #35 /var/www/wiki/w/includes/MediaWiki.php(283): SpecialPageFactory::executePath() #36 /var/www/wiki/w/includes/MediaWiki.php(851): MediaWiki->performRequest() #37 /var/www/wiki/w/includes/MediaWiki.php(512): MediaWiki->main() #38 /var/www/wiki/w/index.php(43): MediaWiki->run() #39 {main} Exception handler threw an object exception: TypeError: Argument 1 passed to mysql_real_escape_string() must be an instance of string, int given in /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqli.php:314 Stack trace: #0 (): mysql_real_escape_string() #1 /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqli.php(314): mysqli->real_escape_string() #2 /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqlBase.php(602): DatabaseMysqli->mysqlRealEscapeString() #3 /var/www/wiki/w/includes/libs/rdbms/database/Database.php(1971): DatabaseMysqlBase->strencode() #4 /var/www/wiki/w/includes/libs/rdbms/database/DatabaseMysqlBase.php(618): Database->addQuotes() #5 /var/www/wiki/w/includes/libs/rdbms/database/Database.php(1618): DatabaseMysqlBase->addQuotes() #6 /var/www/wiki/w/includes/libs/rdbms/database/Database.php(1296): Database->makeList() #7 /var/www/wiki/w/includes/libs/rdbms/database/Database.php(1252): Database->selectSQLText() #8 /var/www/wiki/w/includes/cache/MessageCache.php(480): Database->select() #9 /var/www/wiki/w/includes/cache/MessageCache.php(403): MessageCache->loadFromDB() #10 /var/www/wiki/w/includes/cache/MessageCache.php(325): MessageCache->loadFromDBWithLock() #11 /var/www/wiki/w/includes/cache/MessageCache.php(927): MessageCache->load() #12 /var/www/wiki/w/includes/cache/MessageCache.php(858): MessageCache->getMsgFromNamespace() #13 /var/www/wiki/w/includes/cache/MessageCache.php(826): MessageCache->getMessageForLang() #14 /var/www/wiki/w/includes/cache/MessageCache.php(767): MessageCache->getMessageFromFallbackChain() #15 /var/www/wiki/w/includes/Message.php(1188): MessageCache->get() #16 /var/www/wiki/w/includes/Message.php(802): Message->fetchMessage() #17 /var/www/wiki/w/includes/Message.php(902): Message->toString() #18 /var/www/wiki/w/includes/exception/MWExceptionRenderer.php(246): Message->text() #19 /var/www/wiki/w/includes/exception/MWExceptionRenderer.php(164): MWExceptionRenderer::msg() #20 /var/www/wiki/w/includes/exception/MWExceptionRenderer.php(50): MWExceptionRenderer::reportHTML() #21 /var/www/wiki/w/includes/exception/MWExceptionHandler.php(71): MWExceptionRenderer::output() #22 /var/www/wiki/w/includes/exception/MWExceptionHandler.php(137): MWExceptionHandler::report() #23 (): MWExceptionHandler::handleException() #24 {main}
BTW, why is a deprecated function used at all?