Paketinstallation: SQLSTATE[42000]

  • Hallo,
    ich habe ein Problem mit dem Ausführen von SQL-Code bei der Installation meines Paketes. Hier mal ein Ausschnitt:

    Bei der Installation erhalte ich folgenden Fehler:

    Quote

    Fatal error: SQLSTATE[42000]: Syntax error or access violation: 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 'title varchar(255) NOT NULL,description mediumtext,discardedScores int(10),point' at line 2

    Fliegen tut der also immer in der Zeile, in der der FOREIGN KEY gesetzt wird. Interessanterweise scheint dieser Fehler mehr oder weniger zufällig aufzutreten, da ich das Paket vorher bereits einmal installieren konnte und in der Zwischenzeit nichts am Code des Install-SQLs verändert habe.
    Ich habe in einem anderen Thread hier schon von einem ähnlichen Problem gelesen, dort wurden auch FOREIGN KEYs verwendet, welche allerdings erst ausserhalb des Erstellens der Tabelle gesetzt wurden (wenn ich das richtig verstanden habe, und da bin ich mir nicht sicher, war das der Fehler). Ich schätze also dass ich bei meinem Code auch einen ähnlichen Fehler gemacht habe. Kann mir noch einmal jemand erklären welchen? ;)

    • Official Post

    Die SQL-Datei wird mit einem Parser ausgewertet, damit die entsprechenden Informationen in der Datenbank hinterlegt werden können zwecks Rollback bei der Deinstallation. Der Parser unterstützt aber nicht alle Möglichkeiten die MySQL hergibt, eine Einschränkung ist das anlegen von FOREIGN KEYs direkt im CREATE.


    Entferne es aus der CREATE-Anweisung und füge es nachträglich mit ALTER TABLE wcf1_league_season ADD FOREIGN KEY (leagueID) REFERENCES wcf1_league (leagueID) ON DELETE CASCADE; hinzu. Es führt am Ende zum identischen Ergebnis, nur kann der Parser dieses Konstrukt korrekt auswerten.

  • Also irgendwas läuft jetzt schief... Bei mir sieht die Anweisung jetzt so aus:

    Bei der Installation des Paketes erhalte ich jetzt folgenden Fehler:

    Quote

    Fatal error: Cannot add column 'FOREIGN' to table 'wcf1_league_season'.

    Aus irgendeinem Grund scheint das FOREIGN-Schlüsselwort als Spaltenname angesehen zu werden...

    Edited once, last by the.wolf ().

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!