Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler in Syntax

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fehler in Syntax

    Hy leute
    Ich möchte eine Tabelle in mysql erstellen.
    Doch es kommt ein Fehler:
    Code:
    ' at line 1
    Mein create query:
    Code:
    CREATE TABLE `uploader`.`User`
    (
      `User_ID` Int(20) NOT NULL AUTO_INCREMENT,
      `User_FirstName` Varchar(128) NOT NULL,
      `User_LastName` Varchar(128) NOT NULL,
      `User_NT_Account` Varchar(128),
      `User_EMail` Varchar(512),
      `User_lastLogin` Timestamp NOT NULL,
      `User_Department` Varchar(512)
    ) ENGINE = InnoDB, DEFAULT CHARACTER SET 'UTF8' COLLATE utf8_general_ci;
    Nun was habe ich falsch gemacht?


  • #2
    Zitat von Shylux Beitrag anzeigen
    Code:
    ...
    `User_ID` Int(20) NOT NULL AUTO_INCREMENT,
    ...
    Nun was habe ich falsch gemacht?
    Ich würde sagen den Datentyp INT(20) gibt es nicht. Einfach nur INT verwenden oder entsprechend korrigieren.

    Grüße
    Thomas

    Kommentar


    • #3
      Wenn ich die 20 rausnehme kommt dann dieser Fehler:
      Code:
      ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

      Kommentar


      • #4
        Wie sieht der komplette CREATE TABLE jetzt aus?

        a) wäre falsch
        Code:
        `User_ID` Int() NOT NULL AUTO_INCREMENT,

        b) wäre korrekt
        Code:
        `User_ID` INT NOT NULL AUTO_INCREMENT,
        c) ausserdem fehlt noch der PRIMARY KEY

        Code:
        CREATE TABLE `uploader`.`User`
        (
          `User_ID` INT NOT NULL AUTO_INCREMENT,
          `User_FirstName` Varchar(128) NOT NULL,
          `User_LastName` Varchar(128) NOT NULL,
          `User_NT_Account` Varchar(128),
          `User_EMail` Varchar(512),
          `User_lastLogin` Timestamp NOT NULL,
          `User_Department` Varchar(512),
          PRIMARY KEY (`User_ID`)
        ) ENGINE = InnoDB, DEFAULT CHARACTER SET 'UTF8' COLLATE utf8_general_ci;

        Grüße
        Thomas

        Kommentar


        • #5
          Ich habs jetzt geschafft.
          Die tabellen etc werden erstellt aber es kommt dazu noch eine fehlermeldung:
          Code:
          ERROR 1005 (HY000): Can't create table 'uploader.#sql-3ae_af' (errno: 150)
          Ich habe aber nirgens in meinem scrypt eine tabelle namens "sql-3ae_af". Woher kann dieser Fehler kommen?

          Hier der gesamte Code:
          Code:
          CREATE TABLE `User`
          (
            `User_ID` Int NOT NULL AUTO_INCREMENT PRIMARY KEY,
            `User_FirstName` Varchar(128) NOT NULL,
            `User_LastName` Varchar(128) NOT NULL,
            `User_NT_Account` Varchar(128),
            `User_EMail` Varchar(512),
            `User_lastLogin` Timestamp NOT NULL,
            `User_Department` Varchar(512)
          ) ENGINE = InnoDB, DEFAULT CHARACTER SET 'UTF8' COLLATE utf8_general_ci;
          ALTER TABLE `uploader`.`User` ADD UNIQUE `User_NT_Account` (`User_NT_Account`);
          CREATE TABLE `File`
          (
            `File_ID` Int NOT NULL AUTO_INCREMENT PRIMARY KEY,
            `File_Filename` Varchar(512),
            `File_Size` Int(8),
            `MIME_ID` Int(20),
            `Code_ID` Int(20)
          ) ENGINE = InnoDB, DEFAULT CHARACTER SET 'UTF8' COLLATE utf8_general_ci;
          CREATE TABLE `Action`
          (
            `Action_ID` Int NOT NULL AUTO_INCREMENT PRIMARY KEY,
            `Action_Date` Timestamp NOT NULL,
            `User_ID` Int(20),
            `File_ID` Int(20) NOT NULL,
            `Typ_ID` Int(20) NOT NULL
          ) ENGINE = InnoDB, DEFAULT CHARACTER SET 'UTF8' COLLATE utf8_general_ci;
          CREATE TABLE `MIME`
          (
            `MIME_Type` Varchar(64) NOT NULL PRIMARY KEY,
            `MIME_Extension` Varchar(10) NOT NULL,
            `MIME_ID` Int(20) NOT NULL
          ) ENGINE = InnoDB, DEFAULT CHARACTER SET 'UTF8' COLLATE utf8_general_ci;
          CREATE TABLE `Code`
          (
            `Code_ID` Int NOT NULL AUTO_INCREMENT PRIMARY KEY,
            `Code_Code` Char(8) NOT NULL,
            `User_ID` Int(20),
            `Code_CreateDate` Timestamp
          ) ENGINE = InnoDB, DEFAULT CHARACTER SET 'UTF8' COLLATE utf8_general_ci;
          ALTER TABLE `Code` ADD UNIQUE `Code_Code` (`Code_Code`);
          CREATE TABLE `Typ`
          (
            `Typ_ID` Int NOT NULL PRIMARY KEY,
            `Typ_Name` Varchar(50) NOT NULL
          ) ENGINE = InnoDB, DEFAULT CHARACTER SET 'UTF8' COLLATE utf8_general_ci;
          ALTER TABLE `uploader`.`File` ADD CONSTRAINT `MIMEToFile` FOREIGN KEY (`MIME_ID`) REFERENCES `MIME` (`MIME_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION;
          ALTER TABLE `uploader`.`File` ADD CONSTRAINT `CodeToFile` FOREIGN KEY (`Code_ID`) REFERENCES `Code` (`Code_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION;
          ALTER TABLE `Code` ADD CONSTRAINT `UserToCode` FOREIGN KEY (`User_ID`) REFERENCES `uploader`.`User` (`User_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION;
          ALTER TABLE `Action` ADD CONSTRAINT `UserToAction` FOREIGN KEY (`User_ID`) REFERENCES `uploader`.`User` (`User_ID`) ON DELETE CASCADE ON UPDATE CASCADE;
          ALTER TABLE `Action` ADD CONSTRAINT `FileToAction` FOREIGN KEY (`File_ID`) REFERENCES `uploader`.`File` (`File_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION;
          ALTER TABLE `Action` ADD CONSTRAINT `TypToAction` FOREIGN KEY (`Typ_ID`) REFERENCES `Typ` (`Typ_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION;

          Kommentar


          • #6
            Bei ALTER TABLE 'File' soll ein FOREIGN KEY auf die Spalte MIME_ID erzeugt werden. MIME_ID ist aber kein PRIMARY KEY in der Tabelle MIME

            Code:
            CREATE TABLE `MIME`
            (
              `MIME_Type` Varchar(64) NOT NULL PRIMARY KEY,
              `MIME_Extension` Varchar(10) NOT NULL,
              `MIME_ID` Int(20) NOT NULL
            ) ENGINE = InnoDB, DEFAULT CHARACTER SET 'UTF8' COLLATE utf8_general_ci;
            
            ALTER TABLE `File` ADD CONSTRAINT `MIMEToFile` FOREIGN KEY (`MIM
            E_ID`) REFERENCES `MIME` (`MIME_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION;
            Die Meldung '#sql-3ae_af' ist ein Name für den Dummy-Constraint von MySQL rate ich mal.

            Grüße
            Thomas

            Kommentar

            Lädt...
            X