shoprex-icon-big

Shoprex

Entwickler Seite zum Wordpress Plugin Shoprex

Alle MySQL Tabellen und Spalten auf UTF8 und InnoDB umstellen


Folgendes Script in eine .php Datei kopieren. Die 4 Angaben ausfüllen und dann ausführen.

<?php
 
$server = "z.B. localhost";
$user = "Ein Accountname, der erweiterte Rechte auf die gewünschte Datenbank hat";
$password = "Sein Passwort";
$database = "Die gewünschte Datenbank welche die Tabellen enthält";

echo "<html><head><title></title></head><body><pre>\n"; 
$db = mysql_connect($server, $user, $password);
if(!$db)
{
    echo "Error: Cannot connect to the database\n</pre></body></html>";
    die();
}
mysql_select_db($database);
$result = mysql_query('show tables');
$i = 0;
while($tables = mysql_fetch_array($result))
{
	$query = "ALTER TABLE `".$tables[0]."` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci";
	echo $query."\n";
	mysql_query($query);
	if(mysql_error())
	{
		echo "Error: ".mysql_error()."\n</pre></body></html>";
		die();
	}
	$query = "ALTER TABLE `".$tables[0]."` ENGINE=innodb";
	echo $query."\n";
	mysql_query($query);
	if(mysql_error())
	{
		echo "Error: ".mysql_error()."\n</pre></body></html>";
		die();
	}
	echo "\n";
	$i++;
}
echo "\nFinished! $i Tables.</pre></body></html>";

Die InnoDB ist dem MyISAM vorzuziehen, da sie mehr Funktionen bietet, z.B. Tabellen sperren kann. InnoDB unterstützt alle Funktionen, die MyISAM bietet, somit ist eine Umstellung ohne Gefahr. Aber wie immer gilt: Machen Sie vorher ein Backup!

Zum Thema Geschwindigkeit: Ich hatte es bisher etwas vernachlässigt, dass alle meine Tabellen und Spalten in der Datenbank die gleiche Codierung (UTF-8) und Engine (InnoDB) verwenden. Es war alles ein wenig gemischt. Durch die Ausführung meines Skriptes, hat sich die Ladezeit meiner Seite erheblich beschleunigt.