Syntax Fehler beim einlesen eines Dump

Syntax Fehler beim einlesen eines Dump

am 20.12.2005 11:44:10 von Juerg Schwarz

OS: Linux a
PHP: 4.3.8
MySQL: 4.0.21-Max

Ich will eine DB-Dump-Datei in eine andere reinkopieren. Ganz einfach:

mysqldump -u username -ppassword usr_web29_1 > web29-dump.sql

Das funkt . Dann

mysql -u username -ppassword usr_web28_1 < web28-dump.sql

Es folgt:

ERROR 1064 ar line 141:You have an error in your SQL syntax usw....
....near
option varchar(59) NOT NULL default '',
ordering int(11) NOT

Es erstellt mir mal die ersten 4 Tabellen und füllt die auch auf. Die
ganze Dump Datei sieht ordentlich aus bis ans Ende. Nix auffälliges zu
sehen.

Die Stelle an der der Fehler passiert sieht so aus:



CREATE TABLE jos_components (
id int(11) NOT NULL auto_increment,
name varchar(50) NOT NULL default '',
link varchar(255) NOT NULL default '',
menuid int(11) unsigned NOT NULL default '0',
parent int(11) unsigned NOT NULL default '0',
admin_menu_link varchar(255) NOT NULL default '',
admin_menu_alt varchar(255) NOT NULL default '',
option varchar(50) NOT NULL default '',
ordering int(11) NOT NULL default '0',
admin_menu_img varchar(255) NOT NULL default '',
iscore tinyint(4) NOT NULL default '0',
params text NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;

Also ich sehe hier rein gar nichts was falsch sein könnte. Zumal das
Ganze auf derselben Maschine ausgeführt wird.

Any hints

Juerg

Re: Syntax Fehler beim einlesen eines Dump

am 20.12.2005 12:13:09 von Kai Ruhnau

Juerg Schwarz wrote:
> MySQL: 4.0.21-Max
>
> Ich will eine DB-Dump-Datei in eine andere reinkopieren. Ganz einfach:
>
> mysqldump -u username -ppassword usr_web29_1 > web29-dump.sql
>
> Das funkt . Dann

Auf welcher Frequenz? Dir schon klar, dass nicht alle Frequenzen einfach
so benutzt werden dürfen? Aber vielleicht meinst du etwas anderes...

> mysql -u username -ppassword usr_web28_1 < web28-dump.sql
>
> Es folgt:
>
> ERROR 1064 ar line 141:You have an error in your SQL syntax usw....
> ...near
> option varchar(59) NOT NULL default '',
> ordering int(11) NOT
[während]
> CREATE TABLE jos_components (
> id int(11) NOT NULL auto_increment,
> name varchar(50) NOT NULL default '',
> link varchar(255) NOT NULL default '',
> menuid int(11) unsigned NOT NULL default '0',
> parent int(11) unsigned NOT NULL default '0',
> admin_menu_link varchar(255) NOT NULL default '',
> admin_menu_alt varchar(255) NOT NULL default '',
> option varchar(50) NOT NULL default '',
> ordering int(11) NOT NULL default '0',
> admin_menu_img varchar(255) NOT NULL default '',
> iscore tinyint(4) NOT NULL default '0',
> params text NOT NULL,
> PRIMARY KEY (id)
> ) TYPE=MyISAM;
>
> Also ich sehe hier rein gar nichts was falsch sein könnte. Zumal das
> Ganze auf derselben Maschine ausgeführt wird.

Mir fallen gleich mehrere Dinge auf:

- "option" ist ein reserviertes Wort in MySQL
http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

- Du solltest die Option --quote-names benutzen, um dieses reservierte
Wort zu quoten. Warum ist das nicht default?

- Warum benutzt du in dieser Tabelle Strings als Defaultwert für
Integertypen?

- menuid und parent klingen nicht gerade nach Feldern, die mit einem
Sinnvollen Defaultwert belegt werden können.

Grüße
Kai

Re: Syntax Fehler beim einlesen eines Dump

am 20.12.2005 12:14:44 von Carsten Wiedmann

Juerg Schwarz schrieb:

> OS: Linux a
> PHP: 4.3.8
> MySQL: 4.0.21-Max
>
> Ich will eine DB-Dump-Datei in eine andere reinkopieren. Ganz einfach:
>
> mysqldump -u username -ppassword usr_web29_1 > web29-dump.sql
>
> Das funkt . Dann
>
> mysql -u username -ppassword usr_web28_1 < web28-dump.sql
>
> Es folgt:
>
> ERROR 1064 ar line 141:You have an error in your SQL syntax usw....
> ...near
> option varchar(59) NOT NULL default '',
> ordering int(11) NOT

OPTION ist ein reserviertes Wort, dass du quoten musst. Wenn du bei
mysqldump noch "--quote-names" machst, sollte das automatisch tun.

Gruß
Carsten

Re: Syntax Fehler beim einlesen eines Dump

am 20.12.2005 12:17:24 von Dominik Echterbruch

Juerg Schwarz wrote:
>
> mysql -u username -ppassword usr_web28_1 < web28-dump.sql
>
> Es folgt:
>
> ERROR 1064 ar line 141:You have an error in your SQL syntax usw....
> ...near
> option varchar(59) NOT NULL default '',
> ordering int(11) NOT
>
> Es erstellt mir mal die ersten 4 Tabellen und füllt die auch auf. Die
> ganze Dump Datei sieht ordentlich aus bis ans Ende. Nix auffälliges zu
> sehen.
>
> Die Stelle an der der Fehler passiert sieht so aus:
>
> CREATE TABLE jos_components (
> id int(11) NOT NULL auto_increment,
> name varchar(50) NOT NULL default '',
> link varchar(255) NOT NULL default '',
> menuid int(11) unsigned NOT NULL default '0',
> parent int(11) unsigned NOT NULL default '0',
> admin_menu_link varchar(255) NOT NULL default '',
> admin_menu_alt varchar(255) NOT NULL default '',
> option varchar(50) NOT NULL default '',
> ordering int(11) NOT NULL default '0',
> admin_menu_img varchar(255) NOT NULL default '',
> iscore tinyint(4) NOT NULL default '0',
> params text NOT NULL,
> PRIMARY KEY (id)
> ) TYPE=MyISAM;
>
> Also ich sehe hier rein gar nichts was falsch sein könnte. Zumal das
> Ganze auf derselben Maschine ausgeführt wird.

Ich sehe da schon was. Also genauer gesagt sehe ich da etwas _nicht_,
was aber eigentlich das sein muß, damit es funktioniert. Vielleicht
hilft dir [1], es selber herauszufinden.
Nach der Lokalisierung des Problems hilft dir der Punkt --quote-names
unter [2] sicherlich gerne bei der Lösung.

[1] http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html
[2] http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html


Grüße,
Dominik
--
MonstersGame - Die Schlacht zwischen Vampiren und Werwölfen
http://spielwelt6.monstersgame.net/?ac=vid&vid=3018786

Re: Syntax Fehler beim einlesen eines Dump

am 20.12.2005 14:23:47 von Christian Kirsch

Juerg Schwarz wrote:
> OS: Linux a
> PHP: 4.3.8
> MySQL: 4.0.21-Max
>
> Ich will eine DB-Dump-Datei in eine andere reinkopieren. Ganz einfach:
>
> mysqldump -u username -ppassword usr_web29_1 > web29-dump.sql
>

Bei den Shells, die ich kenne, kopiert das keineswegs etwas irgendwo
rein sondern es erzeugt web29-dump.sql oder überschreibt die Datei, wenn
sie schon existiert.

> Das funkt . Dann

Ah.
>
> mysql -u username -ppassword usr_web28_1 < web28-dump.sql
>
> Es folgt:
>
> ERROR 1064 ar line 141:You have an error in your SQL syntax usw....
> ...near
> option varchar(59) NOT NULL default '',
> ordering int(11) NOT
>

Vermtlich ist OPTION ein reserviertes Wort.