# MySQL Dump nicht einspielbar



## Germanius (17. Mai 2010)

Hallo,

ich habe mittels mysqldump eine Datenbank auf Mysql Version 4.x gesichert und dann versucht bei einem neuen Server Mysql 5.x einzuspielen.

Leider bekomme ich immer folgenden Error beim Einspielen


```
ERROR 1064 (42000) at line 56: 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 'condition text,
  conditiontype enum('OR','AND') NOT NULL default 'OR',
  showor' at line 4
```
An der betreffenden Stelle in der .sql-Datei steht folgendes


```
DROP TABLE IF EXISTS bb1_acpmenuitemgroups;
CREATE TABLE bb1_acpmenuitemgroups (
  itemgroupid smallint(5) unsigned NOT NULL auto_increment,
  title varchar(255) NOT NULL default '',
  condition text,
  conditiontype enum('OR','AND') NOT NULL default 'OR',
  showorder smallint(5) unsigned NOT NULL default '0',
  acpmode tinyint(3) unsigned NOT NULL default '0',
  PRIMARY KEY  (itemgroupid)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
```
Kann mir jemand sagen warum er da immer mit dem oben genannten Fehler abbricht?


----------



## Till (17. Mai 2010)

Ich vermute mal, dass mysql5 irgend ein Problem damit hat dass Schlüsselwörter im enum verwendet werden bzw. dass sie nicht richtig escaped sind. Versuch mal folgendes:

Ändere die Zeile:

conditiontype enum('OR','AND') NOT NULL default 'OR',

in:

conditiontype varchar(255) NOT NULL default '',

und spiel den Dump ein. Danach öffne die DB in phpmyadmin und versuch den Spaltentüp wieder auf enum 'OR','AND' mit Default 'OR' zu setzen.


----------



## Germanius (17. Mai 2010)

Funktioniert leider auch nicht, jetzt kommt folgende Fehlermeldung nachdem ich die Zeile abgeändert habe


```
ERROR 1064 (42000) at line 51: 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 'condition text,
  conditiontype varchar(255) NOT NULL default '',
  showorder sm' at line 4
```


----------



## Germanius (17. Mai 2010)

Habe auch versucht condition und conditiontype in ' ' zu setzen, also 'condition' und 'conditiontype', weil ich irgendwo gelesen hab, dass das reservierte Wörter sind in Mysql 5, aber kommt trotzdem noch dieselbe Fehlermeldung.

Noch andere Ideen?


----------



## Till (17. Mai 2010)

Schau mal hier:

http://forums.mysql.com/read.php?101,40643,40643

Das eigentliche Problem ist also in der Zeile davor. Du kannst es durch hinzufügen von Backticks beheben.


----------



## Germanius (17. Mai 2010)

So sieht das mit Backticks aus, geht aber immer noch nicht.


```
DROP TABLE IF EXISTS bb1_acpmenuitemgroups;
CREATE TABLE bb1_acpmenuitemgroups (
  itemgroupid smallint(5) unsigned NOT NULL auto_increment,
  title varchar(255) NOT NULL default '',
  'condition' text,
  'conditiontype' enum( 'OR', 'AND' ) NOT NULL default 'OR',
  showorder smallint(5) unsigned NOT NULL default '0',
  acpmode tinyint(3) unsigned NOT NULL default '0',
  PRIMARY KEY  (itemgroupid)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
```
Oder wo meintest du fehlen die Backticks?


----------



## Till (17. Mai 2010)

Ich glaube das sind keine Backticks die Du da verwendet hast sondern einfache Anführungszeichen

Backtick: `
Einfaches Anführungszeichen: '


----------



## Germanius (17. Mai 2010)

Hast recht, das war der Fehler. Ich sollte jetzt lieber ins Bett gehen...

Ich bedanke mich!


----------

