/** @var Database $conn */
$conn = $status->value;
$dbName = $this->getVar( 'wgDBname' );
- if ( !$conn->selectDB( $dbName ) ) {
+ if ( !$this->databaseExists( $dbName ) ) {
$conn->query(
"CREATE DATABASE " . $conn->addIdentifierQuotes( $dbName ) . "CHARACTER SET utf8",
__METHOD__
);
- $conn->selectDB( $dbName );
}
+ $conn->selectDB( $dbName );
$this->setupSchemaVars();
return $status;
}
+ /**
+ * Try to see if a given database exists
+ * @param string $dbName Database name to check
+ * @return bool
+ */
+ private function databaseExists( $dbName ) {
+ $encDatabase = $this->db->addQuotes( $dbName );
+
+ return $this->db->query(
+ "SELECT 1 FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = $encDatabase",
+ __METHOD__
+ )->numRows() > 0;
+ }
+
/**
* @return Status
*/