X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Finstaller%2FMysqlInstaller.php;h=0250b6f9c321cae9e27b038b02c0f1f85235c324;hb=419075a0205868eb13a319917668d2bd9a308068;hp=c0731e7c1fb89a44c9ee5a253eb3b7e495501f8b;hpb=0432618416d9d9b34a76f571c3a9c840739f1038;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/installer/MysqlInstaller.php b/includes/installer/MysqlInstaller.php index c0731e7c1f..0250b6f9c3 100644 --- a/includes/installer/MysqlInstaller.php +++ b/includes/installer/MysqlInstaller.php @@ -22,6 +22,8 @@ */ use Wikimedia\Rdbms\Database; +use Wikimedia\Rdbms\DBQueryError; +use Wikimedia\Rdbms\DBConnectionError; /** * Class for setting up the MediaWiki database using MySQL. @@ -49,7 +51,7 @@ class MysqlInstaller extends DatabaseInstaller { public $supportedEngines = [ 'InnoDB', 'MyISAM' ]; - public $minimumVersion = '5.0.3'; + public $minimumVersion = '5.5.8'; public $webUserPrivs = [ 'DELETE', @@ -177,8 +179,8 @@ class MysqlInstaller extends DatabaseInstaller { # Determine existing default character set if ( $conn->tableExists( "revision", __METHOD__ ) ) { - $revision = $conn->buildLike( $this->getVar( 'wgDBprefix' ) . 'revision' ); - $res = $conn->query( "SHOW TABLE STATUS $revision", __METHOD__ ); + $revision = $this->escapeLikeInternal( $this->getVar( 'wgDBprefix' ) . 'revision', '\\' ); + $res = $conn->query( "SHOW TABLE STATUS LIKE '$revision'", __METHOD__ ); $row = $conn->fetchObject( $res ); if ( !$row ) { $this->parent->showMessage( 'config-show-table-status' ); @@ -219,6 +221,16 @@ class MysqlInstaller extends DatabaseInstaller { $wgDBpassword = $this->getVar( '_InstallPassword' ); } + /** + * @param string $s + * @return string + */ + protected function escapeLikeInternal( $s, $escapeChar = '`' ) { + return str_replace( [ $escapeChar, '%', '_' ], + [ "{$escapeChar}{$escapeChar}", "{$escapeChar}%", "{$escapeChar}_" ], + $s ); + } + /** * Get a list of storage engines that are available and supported * @@ -572,7 +584,7 @@ class MysqlInstaller extends DatabaseInstaller { // If we couldn't create for some bizzare reason and the // user probably doesn't exist, skip the grant $this->db->rollback( __METHOD__ ); - $status->warning( 'config-install-user-create-failed', $dbUser, $dqe->getText() ); + $status->warning( 'config-install-user-create-failed', $dbUser, $dqe->getMessage() ); } } } else { @@ -592,7 +604,7 @@ class MysqlInstaller extends DatabaseInstaller { $this->db->commit( __METHOD__ ); } catch ( DBQueryError $dqe ) { $this->db->rollback( __METHOD__ ); - $status->fatal( 'config-install-user-grant-failed', $dbUser, $dqe->getText() ); + $status->fatal( 'config-install-user-grant-failed', $dbUser, $dqe->getMessage() ); } }