MK|breaker
19.01.2010, 14:07
ca 100 Tabellen will bestimmt kein mensch per Hand ändern.....ich hänge hier mal das Script mit an...sonst stehen andere genau so da wie ich am Anfang ;)
PS. Die Datei sollte nach dem erfolgreichen Updaten wieder gelöscht werden ;)
<?php
/////////////////////////////////////////////////////////
// gebaut fuer vbulletin-update v3.8.x auf 4.x.x
// kollation der tabellen eines vbulletin-boardes aendern
//
// powered by www.wittesoft.de @ breaker
/////////////////////////////////////////////////////////
$db_host = 'localhost'; // datenbank-host
$db_user = 'xxxxxxxx'; // datenbank-user
$db_pass = 'xxxxxxxx'; // datenbank-passwort
$db_name = 'xxxxxxxx'; // datenbank-name
$query_seite = 2; // querys pro seite (2 ist nicht verkehrt, da es auch grosse tabellen gibt und
// diese sonst beim wandeln an das php_timeout stossen koennten)
$tabelle_ueberspringen = 'vb_postindex'; // das ist bei mir die groesste tabelle in der ganzen datenbank
// von dieser tabelle bitte auch die kollation nehmen und hier bei "collation" eintragen
$kollation = 'latin1_german2_ci'; // die default-kollation fuer die tabellen
$charset = 'latin1'; // charakter-set fuer die datenbank
// mysql-connect
@mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());
// datenbank auswaehlen
mysql_select_db($db_name) or die(mysql_error());
// navigation initialisieren
if (isset($_GET['step']) && is_numeric($_GET['step']))
{
$step = $_GET['step'];
if ($step > 0)
{
// seiten-anzahl errechnen
$step = $step * $query_seite;
}
}
else
{
// initialisieren von counter und navi
$i = 0;
$step = 0;
}
// show-tables der datenbank (sollten wir eigentlich abgeschaltet haben) ;)
$sql1 = mysql_query('SHOW TABLES') or die(mysql_error());
// array der tabellen durchlaufen
while ($res1 = mysql_fetch_assoc($sql1))
{
$i++;
if ($i >= $step && $i < ($step + $query_seite))
{
// oben genannte tabelle ueberspringen
if ($tabelle_ueberspringen != $res1['Tables_in_' . $db_name])
{
// tabellen der datenbank aendern
$sql2 = mysql_query("ALTER TABLE " . $res1['Tables_in_' . $db_name] . " DEFAULT CHARACTER SET '" . $charset . "' COLLATE '" . $kollation . "'") or die(mysql_error());
echo $res1['Tables_in_' . $db_name] . "\n\r";
}
}
}
// navigation nach dem update anzeigen
echo '<div style="margin-top: 30px;"><a href="' . $_SERVER['PHP_SELF'] . '?step=' . ($_GET['step'] + 1) . '">Naechste Seite</a></div>';
?>
PS. Die Datei sollte nach dem erfolgreichen Updaten wieder gelöscht werden ;)
<?php
/////////////////////////////////////////////////////////
// gebaut fuer vbulletin-update v3.8.x auf 4.x.x
// kollation der tabellen eines vbulletin-boardes aendern
//
// powered by www.wittesoft.de @ breaker
/////////////////////////////////////////////////////////
$db_host = 'localhost'; // datenbank-host
$db_user = 'xxxxxxxx'; // datenbank-user
$db_pass = 'xxxxxxxx'; // datenbank-passwort
$db_name = 'xxxxxxxx'; // datenbank-name
$query_seite = 2; // querys pro seite (2 ist nicht verkehrt, da es auch grosse tabellen gibt und
// diese sonst beim wandeln an das php_timeout stossen koennten)
$tabelle_ueberspringen = 'vb_postindex'; // das ist bei mir die groesste tabelle in der ganzen datenbank
// von dieser tabelle bitte auch die kollation nehmen und hier bei "collation" eintragen
$kollation = 'latin1_german2_ci'; // die default-kollation fuer die tabellen
$charset = 'latin1'; // charakter-set fuer die datenbank
// mysql-connect
@mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());
// datenbank auswaehlen
mysql_select_db($db_name) or die(mysql_error());
// navigation initialisieren
if (isset($_GET['step']) && is_numeric($_GET['step']))
{
$step = $_GET['step'];
if ($step > 0)
{
// seiten-anzahl errechnen
$step = $step * $query_seite;
}
}
else
{
// initialisieren von counter und navi
$i = 0;
$step = 0;
}
// show-tables der datenbank (sollten wir eigentlich abgeschaltet haben) ;)
$sql1 = mysql_query('SHOW TABLES') or die(mysql_error());
// array der tabellen durchlaufen
while ($res1 = mysql_fetch_assoc($sql1))
{
$i++;
if ($i >= $step && $i < ($step + $query_seite))
{
// oben genannte tabelle ueberspringen
if ($tabelle_ueberspringen != $res1['Tables_in_' . $db_name])
{
// tabellen der datenbank aendern
$sql2 = mysql_query("ALTER TABLE " . $res1['Tables_in_' . $db_name] . " DEFAULT CHARACTER SET '" . $charset . "' COLLATE '" . $kollation . "'") or die(mysql_error());
echo $res1['Tables_in_' . $db_name] . "\n\r";
}
}
}
// navigation nach dem update anzeigen
echo '<div style="margin-top: 30px;"><a href="' . $_SERVER['PHP_SELF'] . '?step=' . ($_GET['step'] + 1) . '">Naechste Seite</a></div>';
?>