Hallo,
folgendes Problem habe ich mit meiner Datenbank. Ich möchte ein komplettes Backup per php script erzeugen, das funtzt auch insofern, dass ich ne Datei erstelle und dort alle Befehle richtig drin habe. Zumindest sieht sie genauso aus wie eine Datei die von phpMyAdmin erzeugt wird.
Nun bin ich dabei die Restore-Funktion zu schreiben und zwar prüfe ich zu erst ob die Datenbank existiert, wenn ja dann lösche ich sie, wenn nein dann mache ich weiter. Lese die exportierte Datei ein, schreibe sie in ne Variable und führe mysql_query() mit dieser Variable aus. Leider funktioniert das nicht! er macht einfach gar nichts. Wenn ich jedoch direkt in phpMyAdmin mit dem SQL editor den Code, den ich per "copy" dort einfüge, ausführen lasse funktioniert er insofern, dass alles wiederhergestellt wird.
Das hier ist der Inhalt der exportierten Datei:
--
-- Tabellenstruktur ta_config
--
CREATE TABLE IF NOT EXISTS ta\_config
(
ID
int(10) unsigned NOT NULL auto_increment,
name
varchar(50) NOT NULL,
wert
varchar(100) NOT NULL,
PRIMARY KEY (ID
),
UNIQUE KEY ID
(ID
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Einstellungen' AUTO_INCREMENT=2;
INSERT INTO ta\_config
(ID
, name
, wert
) VALUES
(1, 'maxanzahltapes', '10');
--
-- Tabellenstruktur ta_genre
--
CREATE TABLE IF NOT EXISTS ta\_genre
(
id
int(10) unsigned NOT NULL auto_increment,
genre
varchar(150) NOT NULL,
info
varchar(250) NOT NULL,
PRIMARY KEY (id
),
UNIQUE KEY id
(id
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Genre' AUTO_INCREMENT=10;
INSERT INTO ta\_genre
(id
, genre
, info
) VALUES
(1, 'POP', '-'),
(2, 'Rock', '-'),
(3, 'Metal', '-'),
(4, 'Hard-Rock', '-'),
(5, 'POP-Rock', '-'),
(8, 'Hip-Hop', '-'),
(9, 'Techno', '-');
--
-- Tabellenstruktur ta_music
--
CREATE TABLE IF NOT EXISTS ta\_music
(
id
int(10) unsigned NOT NULL auto_increment,
date
int(10) NOT NULL,
tape
int(10) NOT NULL,
author
varchar(100) NOT NULL,
title
varchar(100) NOT NULL,
album
varchar(100) NOT NULL,
year
int(10) NOT NULL,
info
varchar(250) NOT NULL,
genre
int(10) NOT NULL,
length
varchar(10) NOT NULL,
PRIMARY KEY (id
),
UNIQUE KEY id
(id
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Music' AUTO_INCREMENT=4;
INSERT INTO ta\_music
(id
, date
, tape
, author
, title
, album
, year
, info
, genre
, length
) VALUES
(1, '1215257905', 1, 'Blühen', 'Pferdkotzen', 'Zum kotzen', 1999, '-', 1, '3:19'),
(2, '1215258108', 2, 'Beach Boys', 'Surfin USA', 'The Best Ever', 1995, '-', 1, '-'),
(3, '1215258042', 2, 'BeachBoys', 'Barbara-Ann', 'The Best Ever', 1995, '-', 1, '-');
--
-- Tabellenstruktur ta_tapes
--
CREATE TABLE IF NOT EXISTS ta\_tapes
(
id
int(10) unsigned NOT NULL auto_increment,
date
int(10) NOT NULL,
name
varchar(50) NOT NULL,
info
varchar(250) NOT NULL,
genre
int(10) NOT NULL,
year
int(10) NOT NULL,
dateiname
varchar(250) NOT NULL,
PRIMARY KEY (id
),
UNIQUE KEY id
(id
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Music' AUTO_INCREMENT=5;
INSERT INTO ta\_tapes
(id
, date
, name
, info
, genre
, year
, dateiname
) VALUES
(1, 1215257870, 'Bravo Hits 1', '-', 1, 2000, '/musik/bravo1.mp3'),
(2, 1215258085, 'The Compilation', 'Beach Boys', 1, 1995, '/musik/beach18989.mp3'),
(3, 1215258063, 'The Best', '-', 1, 0, '-'),
(4, 1215365701, 'Tape 38', 'Das beste der Neunziger', 1, 2000, '/musik/tape4.mp3');
Ach bei der Ausführung meldet phpMyAdmin noch diesen fehler:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ';# MySQL lieferte ein leeres Resultat zurück (d. h. null Zeilen).
INS' at line 11
aber ich glaube, dass der nicht viel zu sagen hat. jedenfalls habe ich das so aus anderen foren gelesen.
Ich komme echt nicht weiter ...
Gruß Manuel
PS: Mittlerweile habe ich den Teil der die Datenbank neu erstellt schon raus genommen und lasse diese im "wiederherstellen-script" direkt ausführen, dann klappt das mit der Datenbank, nur nicht mit den Tabellen und Inhalten.
Vielleicht ist es auch eine Lösung, wenn ich die Datei einlese und aufspalte in die einzelnen Querys und diese dann getrennt von einander ausführe. Leider habe ich aber keine Ahnung wie ich das machen soll ;-)