* @file
* @ingroup Deployment
*/
+
+use MediaWiki\MediaWikiServices;
use Wikimedia\Rdbms\LBFactorySingle;
use Wikimedia\Rdbms\Database;
use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\DBExpectedError;
+use Wikimedia\Rdbms\DBConnectionError;
/**
* Base class for DBMS-specific installation helper classes.
/**
* The Installer object.
*
- * @todo Naming this parent is confusing, 'installer' would be clearer.
- *
* @var WebInstaller
*/
public $parent;
/**
* @var string Set by subclasses
*/
- protected static $notMiniumumVerisonMessage;
+ protected static $notMinimumVersionMessage;
/**
* The database connection.
public static function meetsMinimumRequirement( $serverVersion ) {
if ( version_compare( $serverVersion, static::$minimumVersion ) < 0 ) {
return Status::newFatal(
- static::$notMiniumumVerisonMessage, static::$minimumVersion, $serverVersion
+ static::$notMinimumVersionMessage, static::$minimumVersion, $serverVersion
);
}
throw new MWException( __METHOD__ . ': unexpected DB connection error' );
}
- \MediaWiki\MediaWikiServices::resetGlobalInstance();
- $services = \MediaWiki\MediaWikiServices::getInstance();
+ MediaWikiServices::resetGlobalInstance();
+ $services = MediaWikiServices::getInstance();
$connection = $status->value;
$services->redefineService( 'DBLoadBalancerFactory', function () use ( $connection ) {
/**
* Perform database upgrades
*
+ * @suppress SecurityCheck-XSS Escaping provided by $this->outputHandler
* @return bool
*/
public function doUpgrade() {
return false;
}
- if ( !$this->db->selectDB( $this->getVar( 'wgDBname' ) ) ) {
+ try {
+ $this->db->selectDB( $this->getVar( 'wgDBname' ) );
+ } catch ( DBConnectionError $e ) {
+ // Don't catch DBConnectionError
+ throw $e;
+ } catch ( DBExpectedError $e ) {
return false;
}