Announcement

Collapse
No announcement yet.

Anfänger: Error in SQL Datei, erzeugt in Workbench

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Anfänger: Error in SQL Datei, erzeugt in Workbench

    Hallo Zusammen,

    ich brauche MySql für die Uni und habe hierfür zur Übung eine Datenbank mit Workbench erstellt.

    Diese sieht so aus:


    Wenn ich hier die SQL-Datei exportiere und in XAMPP mit PHPMyAdmin importieren will, bekomme ich folgenden Fehler:

    #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 ') )
    ENGINE = InnoDB' at line 9
    Aber da steht "`AbtName` VARCHAR( 25 ) NOT NULL ," und das kann ja nicht falsch sein!

    SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
    SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
    SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

    CREATE SCHEMA IF NOT EXISTS `RFID_Test` DEFAULT CHARACTER SET utf8 COLLATE utf8_roman_ci ;
    USE `RFID_Test` ;

    -- -----------------------------------------------------
    -- Table `RFID_Test`.`t_angestellter`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `RFID_Test`.`t_angestellter` (
    `PersonalNr` INT NOT NULL AUTO_INCREMENT ,
    `RFID` VARCHAR(45) NULL ,
    `Vorname` CHAR(20) NOT NULL ,
    `Nachname` CHAR(30) NOT NULL ,
    `Geburtsdatum` DATE NULL ,
    `Geschlecht männlich` TINYINT(1) NOT NULL ,
    `Postleitzahl` CHAR(10) NOT NULL ,
    `Wohnort` CHAR(30) NOT NULL ,
    `Strasse` CHAR(45) NOT NULL ,
    `Hausnummer` CHAR(5) NOT NULL ,
    `Beruf` VARCHAR(45) NULL ,
    `Stundenlohn` DECIMAL(4,2) NOT NULL ,
    PRIMARY KEY (`PersonalNr`) )
    ENGINE = InnoDB;


    -- -----------------------------------------------------
    -- Table `RFID_Test`.`t_abteilung`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `RFID_Test`.`t_abteilung` (
    `AbtNr` INT NOT NULL AUTO_INCREMENT ,
    `AbtName` VARCHAR(25) NOT NULL ,
    `PersonalNr` INT NOT NULL ,
    PRIMARY KEY (`AbtNr`, `PersonalNr`) ,
    INDEX `abteilung` () )
    ENGINE = InnoDB;


    -- -----------------------------------------------------
    -- Table `RFID_Test`.`t_sachbearbeiter`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `RFID_Test`.`t_sachbearbeiter` (
    `PersonalNr` INT NOT NULL ,
    `t_abteilung_AbtNr` INT NOT NULL ,
    `t_abteilung_PersonalNr` INT NOT NULL ,
    INDEX `sachbearbeiter` (`PersonalNr` ASC) ,
    PRIMARY KEY (`PersonalNr`, `t_abteilung_AbtNr`, `t_abteilung_PersonalNr`) ,
    INDEX `fk_t_sachbearbeiter_t_abteilung1` (`t_abteilung_AbtNr` ASC, `t_abteilung_PersonalNr` ASC) ,
    CONSTRAINT `PersonalNr`
    FOREIGN KEY (`PersonalNr` )
    REFERENCES `RFID_Test`.`t_angestellter` (`PersonalNr` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
    CONSTRAINT `fk_t_sachbearbeiter_t_abteilung1`
    FOREIGN KEY (`t_abteilung_AbtNr` , `t_abteilung_PersonalNr` )
    REFERENCES `RFID_Test`.`t_abteilung` (`AbtNr` , `PersonalNr` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
    ENGINE = InnoDB;


    -- -----------------------------------------------------
    -- Table `RFID_Test`.`t_mitarbeiter`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `RFID_Test`.`t_mitarbeiter` (
    `PersonalNr` INT NOT NULL ,
    `t_abteilung_AbtNr` INT NOT NULL ,
    `t_abteilung_PersonalNr` INT NOT NULL ,
    PRIMARY KEY (`PersonalNr`, `t_abteilung_AbtNr`, `t_abteilung_PersonalNr`) ,
    INDEX `mitarbeiter` (`PersonalNr` ASC) ,
    INDEX `fk_t_mitarbeiter_t_abteilung1` (`t_abteilung_AbtNr` ASC, `t_abteilung_PersonalNr` ASC) ,
    CONSTRAINT `PersonalNr`
    FOREIGN KEY (`PersonalNr` )
    REFERENCES `RFID_Test`.`t_angestellter` (`PersonalNr` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
    CONSTRAINT `fk_t_mitarbeiter_t_abteilung1`
    FOREIGN KEY (`t_abteilung_AbtNr` , `t_abteilung_PersonalNr` )
    REFERENCES `RFID_Test`.`t_abteilung` (`AbtNr` , `PersonalNr` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
    ENGINE = InnoDB;


    -- -----------------------------------------------------
    -- Table `RFID_Test`.`t_projekt`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `RFID_Test`.`t_projekt` (
    `ProjektNr` INT NOT NULL AUTO_INCREMENT ,
    `Name` VARCHAR(45) NOT NULL ,
    `BegDatum` DATE NOT NULL ,
    `EndDatum` DATE NULL ,
    `t_abteilung_AbtNr` INT NOT NULL ,
    `t_abteilung_PersonalNr` INT NOT NULL ,
    PRIMARY KEY (`ProjektNr`, `t_abteilung_AbtNr`, `t_abteilung_PersonalNr`) ,
    INDEX `fk_t_projekt_t_abteilung1` (`t_abteilung_AbtNr` ASC, `t_abteilung_PersonalNr` ASC) ,
    CONSTRAINT `fk_t_projekt_t_abteilung1`
    FOREIGN KEY (`t_abteilung_AbtNr` , `t_abteilung_PersonalNr` )
    REFERENCES `RFID_Test`.`t_abteilung` (`AbtNr` , `PersonalNr` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
    ENGINE = InnoDB;


    -- -----------------------------------------------------
    -- Table `RFID_Test`.`t_mitarbeiter_has_t_projekt`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `RFID_Test`.`t_mitarbeiter_has_t_projekt` (
    `t_mitarbeiter_PersonalNr` INT NOT NULL ,
    `t_mitarbeiter_t_abteilung_AbtNr` INT NOT NULL ,
    `t_mitarbeiter_t_abteilung_PersonalNr` INT NOT NULL ,
    `t_projekt_ProjektNr` INT NOT NULL ,
    PRIMARY KEY (`t_mitarbeiter_PersonalNr`, `t_mitarbeiter_t_abteilung_AbtNr`, `t_mitarbeiter_t_abteilung_PersonalNr`, `t_projekt_ProjektNr`) ,
    INDEX `fk_t_mitarbeiter_has_t_projekt_t_projekt1` (`t_projekt_ProjektNr` ASC) ,
    INDEX `fk_t_mitarbeiter_has_t_projekt_t_mitarbeiter1` (`t_mitarbeiter_PersonalNr` ASC, `t_mitarbeiter_t_abteilung_AbtNr` ASC, `t_mitarbeiter_t_abteilung_PersonalNr` ASC) ,
    CONSTRAINT `fk_t_mitarbeiter_has_t_projekt_t_mitarbeiter1`
    FOREIGN KEY (`t_mitarbeiter_PersonalNr` , `t_mitarbeiter_t_abteilung_AbtNr` , `t_mitarbeiter_t_abteilung_PersonalNr` )
    REFERENCES `RFID_Test`.`t_mitarbeiter` (`PersonalNr` , `t_abteilung_AbtNr` , `t_abteilung_PersonalNr` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
    CONSTRAINT `fk_t_mitarbeiter_has_t_projekt_t_projekt1`
    FOREIGN KEY (`t_projekt_ProjektNr` )
    REFERENCES `RFID_Test`.`t_projekt` (`ProjektNr` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
    ENGINE = InnoDB;


    -- -----------------------------------------------------
    -- Table `RFID_Test`.`t_kunde`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `RFID_Test`.`t_kunde` (
    `KuNr` INT NOT NULL AUTO_INCREMENT ,
    `Name` VARCHAR(45) NOT NULL ,
    `Postleitzahl` CHAR(10) NOT NULL ,
    `Wohnort` CHAR(30) NOT NULL ,
    `Strasse` CHAR(45) NOT NULL ,
    `Hausnummer` CHAR(5) NOT NULL ,
    `t_sachbearbeiter_PersonalNr` INT NOT NULL ,
    `t_sachbearbeiter_t_abteilung_AbtNr` INT NOT NULL ,
    `t_sachbearbeiter_t_abteilung_PersonalNr` INT NOT NULL ,
    PRIMARY KEY (`KuNr`, `t_sachbearbeiter_PersonalNr`, `t_sachbearbeiter_t_abteilung_AbtNr`, `t_sachbearbeiter_t_abteilung_PersonalNr`) ,
    INDEX `fk_t_kunde_t_sachbearbeiter1` (`t_sachbearbeiter_PersonalNr` ASC, `t_sachbearbeiter_t_abteilung_AbtNr` ASC, `t_sachbearbeiter_t_abteilung_PersonalNr` ASC) ,
    CONSTRAINT `fk_t_kunde_t_sachbearbeiter1`
    FOREIGN KEY (`t_sachbearbeiter_PersonalNr` , `t_sachbearbeiter_t_abteilung_AbtNr` , `t_sachbearbeiter_t_abteilung_PersonalNr` )
    REFERENCES `RFID_Test`.`t_sachbearbeiter` (`PersonalNr` , `t_abteilung_AbtNr` , `t_abteilung_PersonalNr` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
    ENGINE = InnoDB;


    -- -----------------------------------------------------
    -- Table `RFID_Test`.`t_auftrag`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `RFID_Test`.`t_auftrag` (
    `AuftragsNr` INT NOT NULL AUTO_INCREMENT ,
    `AuftrDat` DATE NOT NULL ,
    `Beschreibung` VARCHAR(45) NULL ,
    `FertigDat` DATE NULL ,
    `t_projekt_ProjektNr` INT NOT NULL ,
    `t_projekt_t_abteilung_AbtNr` INT NOT NULL ,
    `t_projekt_t_abteilung_PersonalNr` INT NOT NULL ,
    `t_kunde_KuNr` INT NOT NULL ,
    `t_kunde_t_sachbearbeiter_PersonalNr` INT NOT NULL ,
    `t_kunde_t_sachbearbeiter_t_abteilung_AbtNr` INT NOT NULL ,
    `t_kunde_t_sachbearbeiter_t_abteilung_PersonalNr` INT NOT NULL ,
    PRIMARY KEY (`AuftragsNr`, `t_projekt_ProjektNr`, `t_projekt_t_abteilung_AbtNr`, `t_projekt_t_abteilung_PersonalNr`, `t_kunde_KuNr`, `t_kunde_t_sachbearbeiter_PersonalNr`, `t_kunde_t_sachbearbeiter_t_abteilung_AbtNr`, `t_kunde_t_sachbearbeiter_t_abteilung_PersonalNr`) ,
    INDEX `fk_t_auftrag_t_projekt1` (`t_projekt_ProjektNr` ASC, `t_projekt_t_abteilung_AbtNr` ASC, `t_projekt_t_abteilung_PersonalNr` ASC) ,
    INDEX `fk_t_auftrag_t_kunde1` (`t_kunde_KuNr` ASC, `t_kunde_t_sachbearbeiter_PersonalNr` ASC, `t_kunde_t_sachbearbeiter_t_abteilung_AbtNr` ASC, `t_kunde_t_sachbearbeiter_t_abteilung_PersonalNr` ASC) ,
    CONSTRAINT `fk_t_auftrag_t_projekt1`
    FOREIGN KEY (`t_projekt_ProjektNr` , `t_projekt_t_abteilung_AbtNr` , `t_projekt_t_abteilung_PersonalNr` )
    REFERENCES `RFID_Test`.`t_projekt` (`ProjektNr` , `t_abteilung_AbtNr` , `t_abteilung_PersonalNr` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
    CONSTRAINT `fk_t_auftrag_t_kunde1`
    FOREIGN KEY (`t_kunde_KuNr` , `t_kunde_t_sachbearbeiter_PersonalNr` , `t_kunde_t_sachbearbeiter_t_abteilung_AbtNr` , `t_kunde_t_sachbearbeiter_t_abteilung_PersonalNr` )
    REFERENCES `RFID_Test`.`t_kunde` (`KuNr` , `t_sachbearbeiter_PersonalNr` , `t_sachbearbeiter_t_abteilung_AbtNr` , `t_sachbearbeiter_t_abteilung_PersonalNr` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
    ENGINE = InnoDB;



    SET SQL_MODE=@OLD_SQL_MODE;
    SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
    SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
    Wo liegen die Fehler?

    Wozu dienen eigentlich die Indizes, die da automatisch erzeugt werden?
    Da steht ja einmal immer primary und was anderes.
    Dürfen Indizes von verschiedenen Tabellen identische Namen haben?


    Vielen Dank für die Hilfe im Voraus!

  • #2
    Dann wird wohl die MySQL Version der XAMPP Version nicht mit deiner Version übereinstimmen, bzw. die gewählte Engine ist dort nicht vorhanden

    Warum lokal 2 DB benutzen?
    Christian

    Comment


    • #3
      Angeblich ist die gewählte Engine vorhanden, sie wird zumindest in XAMPP angezeigt.

      Ich bin mir nicht ganz sicher was 2 DB bedeutet, aber mir ist bewusst, das ich hier lokal ein Client-Server-System nutze, aber das macht Sinn, weil ich für meine Bachelorarbeit ein logistischen Ablauf aufbauen werde und dort soll mit Clients gearbeitet werden, die daten in SQL einfügen.

      Gibt es denn eine gute Alternative zu XAMPP bzw. phpmyadmin?

      Vielen Dank

      PS: Kann auch kostenpflichtig sein, die Uni würds bestimmt zahlen.

      Comment


      • #4
        Auf welche DB gehst du mit der Workbench?
        Wo ist XAMPP installiert worden?
        Christian

        Comment


        • #5
          Ich habe einfach ein Modell erstellt und dieses als SQL-Datei aus der Workbench exportiert und dann probiert mit XAMPP unter PHPMyAdmin zu importieren.

          XAMPP liegt in c:\XAMPP
          InnoDB ist standardmäßig in Workbench eingestellt und wird laut XAMPP unterstützt.

          So langsam mag ich XAMPP nicht mehr :-(

          Vielen Dank für die Hilfe!

          Edit:
          Ich habe inzwischen eine einfachere Datei erstellt und die funktioniert mit UTF8 und InnoDb in XAMPP, das bedeutet, das der Fehler tatsächlich irgendwo im Code der Datei liegen muss.
          Nur wie finde ich den?
          Zuletzt editiert von Brixus; 29.05.2011, 10:47. Reason: Neue Erkentnisse

          Comment


          • #6
            Hallo,

            deine Tabelle t_abteilung hat einen "leeren" Index abteilung

            INDEX `abteilung` () )

            Lösche diesen Index oder lege das indizierte Feld fest.

            Gruß Falk
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment

            Working...
            X