Backup-Restore-Problem

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