Hallo Forum,
nach langer Zeit bin ich mal wieder mit einem neuen kleinen Problem hier.
Ausgangssituation:
Ich möchte eine Kopie einer bestehenden MySQL Datenbank inkl. aller darin enthaltenen 53 Tabellen erstellen.
Dafür habe ich ein Skript erstellt, welches es mir erlaubt diese anzulegen, die Tabellen zu übernehmen und in der neuen DB den Inhalt der kopierten Tabellen zu löschen.
Problem:
Leider werden nur 48 Tabellen übernommen.
Dann folgt folgender Fehler:
„Incorrect table name ‚abcde‘.
Mein erweiterter Fehler: Could not create Table ‚Tabellenname‘, Tabellennummer 48“
Leider finde ich den Fehler nicht. Vielleicht könnte bitte jemand mal über mein Skript schauen und mit einen Tip geben, wie ich das Problem lösen könnte.
Mein Skript mit Kommentaren zu den Schritten:
<?php include('../connect.php');<br />
if (empty($\_REQUEST['dbanlegen'])){
$i=0;
$server = 'localhost';
$database = 'bestehende\_db';
echo "Legen Sie eine neue DB an!";
} else {
$server = 'localhost';
$svbenutzer = 'root';
$svpass = '';
$database = 'bestehende\_db';
if ( ($db\_handle = mysql\_connect($server, $svbenutzer, $svpass)) === false)
{
die(mysql\_error());
}
//Quell-Datenbank
$database\_source = 'bestehende\_db';
//Ziel-Datenbank
$database\_target = 'neue\_db';
//Ziel-Datenbank erstellen
$sql = "Drop database ".$database\_target;
$query = mysql\_query($sql) or die(mysql\_error());
//Ziel-Datenbank erstellen
$sql = "CREATE database ".$database\_target;
$query = mysql\_query($sql) or die(mysql\_error());
//Tabellen der Quell-Datenbank auslesen
$sql = "SHOW TABLES FROM ".$database\_source;
$query = mysql\_query($sql) or die(mysql\_error());
$num\_tables = mysql\_num\_rows($query);
//$res = mysql\_query($query1);
for($i = 0; $i \< $num\_tables; $i++) {
$table\_name = mysql\_result($query, $i);
$sql = "SHOW CREATE TABLE ".$database\_source.".".$table\_name; //$table\_name;
$sub\_query = mysql\_query($sql) or die("1. ".mysql\_error()."Table: **".$table\_name."" );
$sub\_query\_data\_arr = mysql\_fetch\_row($sub\_query);
//Query zur Erstellung der neuen Tabelle konstruieren
$sql = str\_replace("`".$table_name."`",$database\_target.".".$table\_name, $sub\_query\_data\_arr[1]);
//Tabelle in Ziel-Datenbank erstellen
$sub\_query = mysql\_query($sql) or die("2. ".mysql\_error()." Could not create Table ".$table\_name." ".$i."");
//Daten Einfügen
$sql = "INSERT INTO ".$database\_target.".".$table\_name." SELECT \* FROM ".$database\_source.".".$table\_name;
$sub\_query = mysql\_query($sql) or die("3. ".mysql\_error());
//Daten der neuen DB löschen
$sql = "delete from ".$database\_target.".".$table\_name;
$sub\_query = mysql\_query($sql) or die("4. ".mysql\_error());
// $i=$i+1;
}
}
echo "
Anzahl Tabellen: ".$i;
?\>
Datenbank Vorlage kopieren**
Servername: Datenbankname: SV-Benutzer: SV-Passwort:
Herzlichen Dank für jegliche Tips und Hilfe.
Viele Grüße aus Köln,
Mo