PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mysqldump syntax Fehler beim Wiedereinspielen



Reveller
16.01.05, 19:10
Hallo zusammen!

Ich habe einen MySQL Server (Ver. 4.0.18) von dem ich eine Sicherung erstellt habe:

"mysqldump -u root -p --opt --all-databases > backup.sql"

jetzt wollte ich die Sicherung testen und habe versucht sie auf einen anderen MySQL Server mittels

"mysql -u root -p < backup.sql"

einzuspielen. Dabei bekomme ich die Fehlermeldung:


ERROR 1064 at line 986: 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 'show char(1) NOT NULL default '1',
PRIMARY KEY (id)
) TYPE=M

Was kann die Ursache hierfür sein?? Ich habe schon ne ganze Zeit gegoogelt aber leider nichts gefunden...

Danke.

marce
17.01.05, 07:18
... bin mir nicht ganz sicher, ob das hier in Betracht kommt - aber:

mit all-databases werden ja auch die user-DBs und Verwaltungs-DBs von mysql mitgesichert. Und da könnte dann das mit dem Wiedereinspielen ein Problem geben, da die ja schon existent sind und Inhalte enthalten - und so evtl. unique-IDs doppelt auftauchen (siehe Fehlermeldung) - die also bei dem Dump ausnehmen und vorher dann auch noch ein drop-Tables einfügen lassen, falls die anderen Daten / DBs schon existent sind.

Tomek
17.01.05, 08:46
MySQL 4.1 ist teilweise kritischer/weniger tolerant beim Erstellen von Tabellen ist mir letztens aufgefallen. Versuchst du zufällig einen Dump von MySQL 4.0 in MySQL 4.1 einzuspielen?

Reveller
17.01.05, 10:59
Schönen guten Morgen.

Erstmal vielen Dank für die Antworten.

@marce:
Der Syntax-Fehler kommt nicht bei den User-Tables sondern in einer ganz normalen Datenbank. die Option --opt ist soweit ich weis extra für solche Sicherungen vorgesehen. Hier werden DROPS und alle CREATE Anweisungen automatisch hinzugefügt.

@Tomek:
Leider sind beides die von SuSE9.1 mitgelieferten Versionen 4.0.18 (mit aktuellen Updates)

Man muss doch ne gescheite Sicherung der Datenbanken erstellen können, bzw. diese wiedereinspielen! Das Sichern der Verzeichnisse ist mir zu umständlich mit den LOCK und SYNC Anweisungen...

sirmoloch
17.01.05, 11:01
Es würde helfen wenn du den kompletten Block mal posten könntest. Das Problem lässt sich sicher beheben.

Jammern hilft nicht...;)

Reveller
17.01.05, 11:32
Hier der entsprechende Block:


DROP TABLE IF EXISTS gallerylog;
CREATE TABLE gallerylog (
id bigint(20) NOT NULL auto_increment,
galleryname varchar(255) NOT NULL default '',
time varchar(10) NOT NULL default '',
mode varchar(15) NOT NULL default '',
scheme varchar(25) NOT NULL default '',
reference varchar(255) NOT NULL default '',
count int(11) NOT NULL default '1',
show char(1) NOT NULL default '1',
PRIMARY KEY (id)
) ENGINE=MyISAM;

--
-- Dumping data for table `gallerylog`
--

whistle
17.01.05, 11:39
Hi,
also der Block geht bei mir auch nicht, er scheint sich konkret an dem Wörtchen 'show' zu stoßen, wenn ich das in z.B. blub ändere, geht es.
Gruß

Reveller
17.01.05, 11:43
Mhh ich bin jetzt überhaupt kein SQL Mensch... ist denn ein blub das gleiche wie ein show ?

Ich frage mich nur wie ich jetzt eine Sicherung der Datenbanken machen kann... das show wird bestimmt noch öfter vorkommen.

Aber danke für die Lösung !

whistle
17.01.05, 13:05
Hi,
ich bin auch nicht so der sql-Mensch, ich dachte aber das 'show' wäre in diesem Falle einfach nur der Name der Spalte. Es gibt ja auch die Anweisung show (z.B. tables).
Gruß
Whistle