MySQL Tabellen-präfixe ändern?

Ihr lieben,
ich möchte für eine bestimmte Sache alle Tabellen-Präfixe einer Datenbank
wechseln.

Beispiel ist hier ein phpBB.

Alle Präfixe “phpbb_” sollten in “forum_” geändert werden.

Wie mache ich das nachträglich?
Das phpBB ist bereits installiert und die Tabellen in der Datenbank auch schon gefüllt.
Nun möchte ich die nachträglich ändern.

Liebe Grüße
Jan

Hier ein kleines Script.

<?php

$database = "bplaced"; //die Datenbank, in der DAs ganze stattfinden soll
$prefix = "alpha_"; //alter Präfix
$newprefix = "test_"; //neuer Präfix

$sql = "SHOW TABLES";
$query = mysql_query($sql);
while($ds = mysql_fetch_assoc($query)){
	$tmptable = $ds['Tables_in_'.$database];
	if(substr($tmptable, 0, strlen($prefix)) == $prefix){
		$tables[] = $tmptable;
	}
}

foreach($tables as $table){
	$resttable = substr($table, strlen($prefix));
	$sql = "RENAME TABLE `".$database."`.`".$table."`  TO `".$database."`.`".$newprefix.$resttable."`";
	$query = mysql_query($sql);
}

?>

Musst natürlich noch vorher Datenbankverbindung etc herstellen, und die Drei Variablen oben noch anpassen.

Hab das ganze auch mit einer Datenbank getestet. Hat recht gut geklappt.

mfg Balmung

^^… und in der Konfiguration des BB natürlich den neuen Prefix eintragen.

Wie meinste das?

Muss ich dazu was in dem Script noch ändern oder das ganze in phpMyAdmin ausführen oder wie?

Liebe Grüße
Jan

Das ist kein SQL, also wird es nicht möglich sein, das ganze in phpmyamdin auszuführen.
Das ganze ist ein normales PHP-Script, jetzt etwas erweitert.
Speicherst es ab, gibts deinen mysql benutzernamen und passwort an, sowie die Datenbank, lädst es hoch, und führst es einmal aus

<?php

$hostname = "localhost";
$username = "name"; //mysql benutzername
$password = "pw"; //mysql passwort
$database = "bplaced"; //die Datenbank, in der Das ganze stattfinden soll

$dz = mysql_connect($hostname, $username, $password);
mysql_select_db($database, $dz);


$prefix = "phpbb_"; //alter Präfix
$newprefix = "forum_"; //neuer Präfix


$sql = "SHOW TABLES";
$query = mysql_query($sql);
while($ds = mysql_fetch_assoc($query)){
	$tmptable = $ds['Tables_in_'.$database];
	if(substr($tmptable, 0, strlen($prefix)) == $prefix){
		$tables[] = $tmptable;
	}
}

foreach($tables as $table){
	$resttable = substr($table, strlen($prefix));
	$sql = "RENAME TABLE `".$database."`.`".$table."`  TO `".$database."`.`".$newprefix.$resttable."`";
	$query = mysql_query($sql);
	if($query){
		echo "Tabelle: ".$table." wurde in ".$newprefix.$resttable." umbenannt.<br />";
	}else{
		echo "Tabelle: ".$table." konnte nicht umbenannt werden.<br />";
	}
}

?>