* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
+ * @file
* @ingroup Maintenance
+ * @ingroup Wikimedia
*/
-require_once( "Maintenance.php" );
+require_once( dirname( __FILE__ ) . '/Maintenance.php' );
class RenameWiki extends Maintenance {
public function __construct() {
parent::__construct();
$this->mDescription = "Rename external storage dbs and leave a new one";
- $this->addArgs( array( 'olddb', 'newdb' ) );
+ $this->addArg( 'olddb', 'Old DB name' );
+ $this->addArg( 'newdb', 'New DB name' );
+ }
+
+ public function getDbType() {
+ return Maintenance::DB_ADMIN;
}
public function execute() {
$to = $this->getArg( 1 );
$this->output( "Renaming blob tables in ES from $from to $to...\n" );
$this->output( "Sleeping 5 seconds...\n" );
- sleep(5);
+ sleep( 5 );
# Initialise external storage
if ( is_array( $wgDefaultExternalStore ) ) {
}
if ( count( $stores ) ) {
- $this->output( "Initialising external storage $store...\n" );
+ $this->output( "Initialising external storage...\n" );
global $wgDBuser, $wgDBpassword, $wgExternalServers;
foreach ( $stores as $storeURL ) {
$m = array();
if ( !preg_match( '!^DB://(.*)$!', $storeURL, $m ) ) {
continue;
}
-
+
$cluster = $m[1];
-
+
# Hack
$wgExternalServers[$cluster][0]['user'] = $wgDBuser;
$wgExternalServers[$cluster][0]['password'] = $wgDBpassword;
-
+
$store = new ExternalStoreDB;
$extdb =& $store->getMaster( $cluster );
$extdb->query( "SET table_type=InnoDB" );
$extdb->query( "ALTER TABLE {$from}.blobs RENAME TO {$to}.blobs" );
$extdb->selectDB( $from );
$extdb->sourceFile( $this->getDir() . '/storage/blobs.sql' );
- $extdb->immediateCommit();
+ $extdb->commit();
}
}
$this->output( "done.\n" );
}
$maintClass = "RenameWiki";
-require_once( DO_MAINTENANCE );
+require_once( RUN_MAINTENANCE_IF_MAIN );