Sytnaxfehler in Datenbank - aber wo und warum?

FragJOe

Grünschnabel
Hallo zusammen,

habe im Rahmen eines Umzugs auf einen neuen Server ein Back-Up gemacht, nun will ich dieses einspielen und es nicht. Ich habe mit phpMyAdmin alle Blöcke einzeln wieder eingespielt aber bei zweien bekomm ich eine Fehlermeldung, kann mir jeand sagen woran das liegt?!

Dies ist der erste Fehler:
Code:
CREATE TABLE apb1_modinstall_links (
  id int(11) NOT NULL auto_increment,
  unique varchar(30) NOT NULL default '',
  text varchar(30) NOT NULL default '',
  link varchar(100) NOT NULL default '',
  target varchar(20) NOT NULL default '_top',
  sortorder int(2) NOT NULL default '0',
  groups varchar(255) NOT NULL default '1,2,3,4,5',
  active tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (id),
  KEY groups (groups)
) TYPE=MyISAM;
Es erscheint folgende Fehlermeldung:
#1064 - 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 'varchar(30) NOT NULL default '',
text varchar(30) NOT NULL default '',
lin' at line 6

Der zweite Block:
Code:
CREATE TABLE apb1_modinstall_log (
  id int(11) NOT NULL auto_increment,
  unique varchar(50) NOT NULL default '',
  actions text NOT NULL,
  UNIQUE KEY id (id),
  KEY id_2 (id),
  KEY unique (unique)
) TYPE=MyISAM;
Es erscheint:
#1064 - 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 'varchar(50) NOT NULL default '',
actions text NOT NULL,
UNIQUE KEY id (id)' at line 6

Wie gesagt, alle anderen Teile des Boards habe ich eingespielt bekommen, hier ein Link zum Board, falls jemand den aktuellen Status sehen möchte: Frag Joe Forum

Ich benutze übrigens MySQL 4.1.16!

Schon mal Danke für die hilfreichen Antworten die bestimmt jetzt kommen! ;-)

Marco
 
Unique und Text sind Schlüsselwörter, die man nicht als Feldnamen verwenden sollte, das könnte den Fehler verursachen.
Müssen es diese Namen sein, kannst Du sie in Backticks (`) setzen.

Gruß hpvw
 
Hallo!

Habe jetzt folgendes importiert (oder es versucht):

PHP:
CREATE TABLE apb1_modinstall_log (
  id int(11) NOT NULL auto_increment,
  `unique` varchar(50) NOT NULL default '',
  actions text NOT NULL,
  `UNIQUE` KEY id (id),
  KEY id_2 (id),
  KEY `unique` (unique)
) TYPE=MyISAM;

Dann kommt leider diese Meldung:

#1064 - 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 'KEY id (id),
KEY id_2 (id),
KEY `unique` (unique)
) TYPE=MyISAM' at line 5


...
 
Statt dem Unique Key würde ich einen Primary Key auf die ID legen:
SQL:
CREATE TABLE apb1_modinstall_log (
  id int(11) NOT NULL auto_increment,
  `unique` varchar(50) NOT NULL default '',
  actions text NOT NULL,
  PRIMARY KEY (id),
  KEY id_2 (id),
  KEY `unique` (`unique`)
) TYPE=MyISAM;
Gruß hpvw

EDIT: Der zweite Index auf id ist überflüssig und nicht empfohlen:
SQL:
CREATE TABLE apb1_modinstall_log (
  id int(11) NOT NULL auto_increment,
  `unique` varchar(50) NOT NULL default '',
  actions text NOT NULL,
  PRIMARY KEY (id),
  KEY `unique` (`unique`)
) TYPE=MyISAM;
 
Hi!

Genial - die Datenbank konnte ich jetzt anlegen - ohne Probleme!
Könntest Du mir bei der zweiten auch noch helfen bzw. das so ändern das es geht, hab echt null ahnung davon...

PHP:
CREATE TABLE apb1_modinstall_links (
  id int(11) NOT NULL auto_increment,
  unique varchar(30) NOT NULL default '',
  text varchar(30) NOT NULL default '',
  link varchar(100) NOT NULL default '',
  target varchar(20) NOT NULL default '_top',
  sortorder int(2) NOT NULL default '0',
  groups varchar(255) NOT NULL default '1,2,3,4,5',
  active tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (id),
  KEY groups (groups)
) TYPE=MyISAM;

Vielen Dank schon einmal!
 
Du musst nur die Feldnamen, die wie Schlüsselwörter benannt sind in Backticks setzen:
SQL:
CREATE TABLE apb1_modinstall_links (
  id int(11) NOT NULL auto_increment,
  `unique` varchar(30) NOT NULL default '',
  `text` varchar(30) NOT NULL default '',
  link varchar(100) NOT NULL default '',
  target varchar(20) NOT NULL default '_top',
  sortorder int(2) NOT NULL default '0',
  groups varchar(255) NOT NULL default '1,2,3,4,5',
  active tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (id),
  KEY groups (groups)
) TYPE=MyISAM;
Gruß hpvw
 
Zurück