'KEY' auslesen
Ich habe ein Backupprogramm für MySQL datenbanken vom Internet heruntergeladen, nur funktionniert das ganze nicht wie es soll, und ich habe keine ahnung weshalb nicht!
// Struktur der Tabelle einlesen $def = ""; $def .= "DROP TABLE IF EXISTS $tabelle; n"; $def .= "CREATE TABLE $tabelle (n"; $result3 = mysql_db_query($database, "SHOW FIELDS FROM $tabelle",$conn_id); while($row = mysql_fetch_array($result3)) { $def .= " $row[Field] $row[Type]"; if ($row["Default"] != "") $def .= " DEFAULT '$row[Default]'"; if ($row["Null"] != "YES") $def .= " NOT NULL"; if ($row[Extra] != "") $def .= " $row[Extra]"; $def .= ",n"; } $def = ereg_replace(",n$","", $def); $result3 = mysql_db_query($database, "SHOW KEYS FROM $tabelle",$conn_id); while($row = mysql_fetch_array($result3)) { $kname=$row[Key_name]; if(($kname != "PRIMARY") && ($row[Non_unique] == 0)) $kname="UNIQUE|$kname"; if(!isset($index[$kname])) $index[$kname] = array(); $index[$kname][] = $row[Column_name]; } while(list($xy, $columns) = @each($index)) { $def .= ",n"; if($xy == "PRIMARY") $def .= " PRIMARY KEY (" . implode($columns, ", ") . ")"; else if (substr($xy,0,6) == "UNIQUE") $def .= " UNIQUE ".substr($xy,7)." (" . implode($columns, ", ") . ")"; else $def .= " KEY $xy (" . implode($columns, ", ") . ")"; } $def .= "n); n"; // Ende Struktur Modul Das Problem ist, dass "KEY id (id)" nur beim ersten durchlauf (-> erste tabelle) aufgeführt wird (letzte while schleife wird nur ein mal ausgeführt), später nicht mehr. So Sieht das dann aus: Code:
DROP TABLE IF EXISTS anwendungen; |
hier ist noch der komplette code. Vielleicht findet jemand damit den fehler:
http://3d-community.com/cavitec/dump.phps |
Ich hab mir das Tool nicht angesehen, aber warum machst Du das Ganze nicht mit phpMyAdmin oder (wenn Du Shellzugriff hast) mit mysqldump?
|
Hallo Gweilo,
das funktioniert, wenn's das System hergibt, auch prima... http://www.selfphp.info/forum/showth...9754#post29754 |
phpmyadmin geht nicht, weil ich die backups automatisch erstellen lasse (1 mal am tag) und diese dann auch automatisch wieder einlesen können will.
Es funktionniert alles, bis auf diese "KEY id (id)" die ab der 2. tabelle fehlen. ich glaube es läuft auf einem UNIX system, dann klappt das mit linux nicht mehr, oder geht dieser shell befehl auch unter UNIX? Danke schon mal für die antworten... |
Der Shellbefehl klappt auf jeden Fall unter Unix/Linux/*ix - daher kenn ich das Teil sogar, weiß nicht ob es bei Windows auch geht.
|
woran das problem liegt weiss niemand?
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 08:54:14 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.