Added --wikidb param to sql.php
* This is useful for updating DBs that are not actually a that of a wiki. For example a global blocking or central auth DB may not correspond to any single wiki. Trying to use --wiki will fail with het deploy Change-Id: I232182b79c9ca6421789f19771ba427498fff713
This commit is contained in:
parent
00caf71094
commit
dd3a475346
1 changed files with 12 additions and 10 deletions
|
|
@ -34,15 +34,17 @@ class MwSql extends Maintenance {
|
|||
parent::__construct();
|
||||
$this->mDescription = "Send SQL queries to a MediaWiki database";
|
||||
$this->addOption( 'cluster', 'Use an external cluster by name', false, true );
|
||||
$this->addOption( 'wikidb', 'The database wiki ID to use if not the current one', false, true );
|
||||
$this->addOption( 'slave', 'Use a slave server (either "any" or by name)', false, true );
|
||||
}
|
||||
|
||||
public function execute() {
|
||||
$wiki = $this->getOption( 'wikidb' ) ?: false;
|
||||
// Get the appropriate load balancer (for this wiki)
|
||||
if ( $this->hasOption( 'cluster' ) ) {
|
||||
$lb = wfGetLBFactory()->getExternalLB( $this->getOption( 'cluster' ) );
|
||||
$lb = wfGetLBFactory()->getExternalLB( $this->getOption( 'cluster' ), $wiki );
|
||||
} else {
|
||||
$lb = wfGetLB();
|
||||
$lb = wfGetLB( $wiki );
|
||||
}
|
||||
// Figure out which server to use
|
||||
if ( $this->hasOption( 'slave' ) ) {
|
||||
|
|
@ -65,9 +67,9 @@ class MwSql extends Maintenance {
|
|||
$index = DB_MASTER;
|
||||
}
|
||||
// Get a DB handle (with this wiki's DB selected) from the appropriate load balancer
|
||||
$dbw = $lb->getConnection( $index );
|
||||
if ( $this->hasOption( 'slave' ) && $dbw->getLBInfo( 'master' ) !== null ) {
|
||||
$this->error( "The server selected ({$dbw->getServer()}) is not a slave.", 1 );
|
||||
$db = $lb->getConnection( $index, array(), $wiki );
|
||||
if ( $this->hasOption( 'slave' ) && $db->getLBInfo( 'master' ) !== null ) {
|
||||
$this->error( "The server selected ({$db->getServer()}) is not a slave.", 1 );
|
||||
}
|
||||
|
||||
if ( $this->hasArg( 0 ) ) {
|
||||
|
|
@ -76,7 +78,7 @@ class MwSql extends Maintenance {
|
|||
$this->error( "Unable to open input file", true );
|
||||
}
|
||||
|
||||
$error = $dbw->sourceStream( $file, false, array( $this, 'sqlPrintResult' ) );
|
||||
$error = $db->sourceStream( $file, false, array( $this, 'sqlPrintResult' ) );
|
||||
if ( $error !== true ) {
|
||||
$this->error( $error, true );
|
||||
} else {
|
||||
|
|
@ -102,7 +104,7 @@ class MwSql extends Maintenance {
|
|||
# User simply pressed return key
|
||||
continue;
|
||||
}
|
||||
$done = $dbw->streamStatementEnd( $wholeLine, $line );
|
||||
$done = $db->streamStatementEnd( $wholeLine, $line );
|
||||
|
||||
$wholeLine .= $line;
|
||||
|
||||
|
|
@ -114,12 +116,12 @@ class MwSql extends Maintenance {
|
|||
if ( $useReadline ) {
|
||||
# Delimiter is eated by streamStatementEnd, we add it
|
||||
# up in the history (bug 37020)
|
||||
readline_add_history( $wholeLine . $dbw->getDelimiter() );
|
||||
readline_add_history( $wholeLine . $db->getDelimiter() );
|
||||
readline_write_history( $historyFile );
|
||||
}
|
||||
try {
|
||||
$res = $dbw->query( $wholeLine );
|
||||
$this->sqlPrintResult( $res, $dbw );
|
||||
$res = $db->query( $wholeLine );
|
||||
$this->sqlPrintResult( $res, $db );
|
||||
$prompt = $newPrompt;
|
||||
$wholeLine = '';
|
||||
} catch ( DBQueryError $e ) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue