Backup-Restore-Problem
am 26.09.2006 13:28:33 von Jan Schmidt
Hallo NG,
ich habe eine DB, diese wird gesichert mit
mysqldump -h $HOST -u $USER -p$PSWRD -A -q --add-locks --add-drop-table > backup.sql
Ein Restore mit
mysql -h $HOST -u $USER -p$PSWRD < backup.sql
führt zu Fehler:
Version 5.0.19-standard:
ERROR 1064 (42000) at line 37551: 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 'int(6) unsigned NOT NULL auto_increment,
ArtNr int(9) unsigned zerofill defau' at line 2
Version 4.0.15-nt:
ERROR 1064 (00000) at line 37551: 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 'int(6) unsigned NOT NULL auto_increment,
ArtNr int(9) unsigne
-- Auszug aus backup.sql
-- MySQL dump 9.11
--
-- Host: localhost Database:
-- ------------------------------------------------------
-- Server version 4.0.21-log
CREATE TABLE Zuordnung_ArtNr_zu_Prueftabelle (
Index int(6) unsigned NOT NULL auto_increment,
ArtNr int(9) unsigned zerofill default NULL,
StartTabelle int(6) unsigned default NULL,
HauptTabelle int(6) default NULL,
NebenTabelle int(6) default NULL,
Abschlusstabelle int(6) default NULL,
PRIMARY KEY (Index)
) TYPE=MyISAM;
Kann mir jemand erklären, was dort schief geht und wie ich das beheben
kann? Ich habe fragliche Anweisung auch per Hand eigegeben und habe
selbe Fehlermeldung bekommen.
Wenn ich allerdings händisch die Spalte Index einklammere (`Index`),
meckert mysql nicht rum.
Ist das ein Bug von mysqldump?
GruÃ,
Jan
Re: Backup-Restore-Problem
am 26.09.2006 14:00:12 von Andreas Kretschmer
Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de
Re: Backup-Restore-Problem
am 26.09.2006 14:03:28 von Kai Ruhnau
Jan Schmidt wrote:
> Hallo NG,
>
> ich habe eine DB, diese wird gesichert mit
>
> mysqldump -h $HOST -u $USER -p$PSWRD -A -q --add-locks --add-drop-table > backup.sql
>
> Ein Restore mit
>
> mysql -h $HOST -u $USER -p$PSWRD < backup.sql
>
> führt zu Fehler:
>
> Version 5.0.19-standard:
>
> ERROR 1064 (42000) at line 37551: 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 'int(6) unsigned NOT NULL auto_increment,
> ArtNr int(9) unsigned zerofill defau' at line 2
>
> Version 4.0.15-nt:
>
> ERROR 1064 (00000) at line 37551: 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 'int(6) unsigned NOT NULL auto_increment,
> ArtNr int(9) unsigne
>
> -- Auszug aus backup.sql
>
> -- MySQL dump 9.11
> --
> -- Host: localhost Database:
> -- ------------------------------------------------------
> -- Server version 4.0.21-log
>
> CREATE TABLE Zuordnung_ArtNr_zu_Prueftabelle (
> Index int(6) unsigned NOT NULL auto_increment,
> ArtNr int(9) unsigned zerofill default NULL,
> StartTabelle int(6) unsigned default NULL,
> HauptTabelle int(6) default NULL,
> NebenTabelle int(6) default NULL,
> Abschlusstabelle int(6) default NULL,
> PRIMARY KEY (Index)
> ) TYPE=MyISAM;
>
> Kann mir jemand erklären, was dort schief geht und wie ich das beheben
> kann? Ich habe fragliche Anweisung auch per Hand eigegeben und habe
> selbe Fehlermeldung bekommen.
`Index` ist selbstverständlich ein reservierter Bezeichner. Was du da
siehst eine Art sonderbaren Verhaltens, das auftritt, wenn man die
trotzdem als Spaltenname benutzt.
> Wenn ich allerdings händisch die Spalte Index einklammere (`Index`),
> meckert mysql nicht rum.
Weil MySQL dann nicht mehr Index als reservierten Bezeichner liest,
sondern als Spaltenbezeichnung.
> Ist das ein Bug von mysqldump?
Nein, du bedienst mysqldump falsch.
Die einfachste Möglichkeit, das zu beheben ist sicherlich keine
reservierten Bezeichner zu benutzen, aber die Option scheidet wohl aus.
Die zweite Variante ist, anstelle von "-q --add-locks --add-drop-table"
ausschlieÃlich die Option "--opt" zu benutzen. Die setzt noch ein paar
weitere sinnvolle Parameter und ist in aktuellen Versionen von mysqldump
auch standardmäÃig aktiviert.
Die dritte Variante ist, die kann ich aber gerade nicht testen, die
Option zum automatischen Quoting der Bezeichner noch hinzuzufügen. Unter
mysqldump 10.10 kann ich das, so wie ich das sehe, nichtmal abstellen.
HTH und GrüÃe
Kai
Re: Backup-Restore-Problem
am 26.09.2006 14:34:31 von Sven Paulus
Kai Ruhnau wrote:
> Die dritte Variante ist, die kann ich aber gerade nicht testen, die=20
> Option zum automatischen Quoting der Bezeichner noch hinzuzufügen.=20
--quote-names
> Unter mysqldump 10.10 kann ich das, so wie ich das sehe, nichtmal
> abstellen.
--skip-quote-names
Re: Backup-Restore-Problem
am 26.09.2006 15:09:41 von Kai Ruhnau
Sven Paulus wrote:
> Kai Ruhnau wrote:
>> Die dritte Variante ist, die kann ich aber gerade nicht testen, die
>> Option zum automatischen Quoting der Bezeichner noch hinzuzufügen.
>
> --quote-names
>
>> Unter mysqldump 10.10 kann ich das, so wie ich das sehe, nichtmal
>> abstellen.
>
> --skip-quote-names
*Brilleputz*
Ah, danke :)
Grüße
Kai
Re: Backup-Restore-Problem
am 26.09.2006 15:11:25 von Jan Schmidt
Kai Ruhnau writes:
> Jan Schmidt wrote:
>
> Nein, du bedienst mysqldump falsch.
:-)
> Die einfachste Möglichkeit, das zu beheben ist sicherlich keine
> reservierten Bezeichner zu benutzen, aber die Option scheidet wohl aus.
zukünftig ist das sicher machbar.
> Die zweite Variante ist, anstelle von "-q --add-locks
> --add-drop-table" ausschlieÃlich die Option "--opt" zu benutzen. Die
> setzt noch ein paar weitere sinnvolle Parameter und ist in aktuellen
> Versionen von mysqldump auch standardmäÃig aktiviert.
das hat leider nicht geholfen.
> Die dritte Variante ist, die kann ich aber gerade nicht testen, die
> Option zum automatischen Quoting der Bezeichner noch
> hinzuzufügen. Unter mysqldump 10.10 kann ich das, so wie ich das sehe,
> nichtmal abstellen.
war ein guter Tip "--quote-names" tut.
Bei der Gelegenheit hab ich gleich noch eine andere Frage: Wie kann
ich bei mysqldump 10.10 "extended-insert=TRUE" ändern?
[client]
extended-insert=FALSE
in der ~/.my.cnf hilft leider nicht.
GruÃ,
jan
Re: Backup-Restore-Problem
am 26.09.2006 15:22:00 von Jan Schmidt
Jan Schmidt writes:
> Bei der Gelegenheit hab ich gleich noch eine andere Frage: Wie kann
> ich bei mysqldump 10.10 "extended-insert=TRUE" ändern?
>
> [client]
> extended-insert=FALSE
>
> in der ~/.my.cnf hilft leider nicht.
doch, das funktioniert, aber die Kommandozeilenoptionen haben
offensichtlich höhere Priorität als die Einträge in den
Konfig-Dateien, so daà mir --opt nicht hilft. Oder gibts einen anderen
Weg extended-insert abzuschalten?
jan
Re: Backup-Restore-Problem
am 26.09.2006 15:58:33 von Sven Paulus
Jan Schmidt wrote:
> doch, das funktioniert, aber die Kommandozeilenoptionen haben
> offensichtlich höhere Priorität als die Einträge in den
> Konfig-Dateien, so daà mir --opt nicht hilft. Oder gibts einen ande=
ren
> Weg extended-insert abzuschalten?
--extended-insert=3DFALSE hinter --opt