Fremdschlüssel-Überprüfung

  • Affected Version
    WoltLab Suite 5.3
    WoltLab Suite Forum wbb1_thread_form_option 073af26696d2d63d4d37f7ae55e8c0dc_fk
    WoltLab Suite Filebase filebase1_file 08d315c73f30b7ff3be768bb2d4af56b_fk
    WoltLab Suite Filebase: Diskussionsthemen für Dateien filebase1_file 32eb1de0d122b813c75b163a9ea804fc_fk
    WoltLab Suite Filebase: Diskussionsthemen für Dateien filebase1_file_version 22207a554b1cb6a880086f1fd647fedc_fk


    Was ist da los? Die werden als Fehlerhaft gezeigt. Update von 5.2.9 auf 5.3 RC3

  • Mal versucht, die zu fixen? Unser Plugin bringt die Möglichkeit ja mit.

    Das kann das 5.3 wohl von sich aus, aber klickt man auf den Schraubenschlüssel kommt: Seite nicht gefunden.

  • klickt man auf den Schraubenschlüssel kommt: Seite nicht gefunden.

    Ich kann das Problem mit den Fremdschlüsseln (bei mir nur der des Forums, da ich keine Filebase habe) bestätigen. Und auch das Verhalten beim Klick auf den Schraubenschlüssel habe ich leider, dass die Seite nicht gefunden wird.

    Gruß aus Südhessen

  • Das schauen wir uns an, sobald sich jemand bei uns mit dem Problem meldet und wir uns das genauer anschauen können. Aber ein false-Positive würde ich jetzt pauschal ausschließen.

  • SoftCreatR Das Plugin scheint nicht im Store zu sein

    https://shop.softcreatr.com/product/6-foreign-key-check/


    Wir hatten es nie in den Store geladen da das Plugin vor allem zum Beheben von Problemen dient und im normalbetrieb unnötig sein sollte.


    Kannst du sagen, ob die Prüfung an der Stelle definitiv richtig ist oder ob das möglicherweise ein False Positive ist?

    Wir lesen alle vom WSC gespeicherten FKs aus (das WSC selbst bildet eine Ausnahme, hier lesen lesen wir die Keys direkt aus der install.sql von GitHub aus, sollte aber keine Rolle spielen):

    SQL
    SELECT    log.*, package.packageName
                FROM    wcf' . WCF_N . '_package_installation_sql_log log
                LEFT JOIN wcf' . WCF_N . "_package package
                ON        (log.packageID = package.packageID)
                WHERE    sqlIndex LIKE '%_fk%'
                AND log.packageID <> ?
                ORDER BY sqlTable ASC

    Und lassen uns dann zu jedem Eintrag den passenden FK raussuchen:

    SQL
    SELECT 
                        TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
                    FROM
                        INFORMATION_SCHEMA.KEY_COLUMN_USAGE
                    WHERE
                        REFERENCED_TABLE_SCHEMA = ?
                        AND TABLE_NAME = ?

    Das selbe Verfahren wird auch vom WSC verwendet und sollte daher eigentlich keine Probleme bereiten.

  • möglicherweise ein False Positive


    Ich habe nun nachgesehen. False-Positive trifft es nur bedingt:



    Der "defekte" FK ist 073af26696d2d63d4d37f7ae55e8c0dc_fk. Dieser stammt aus dem WSC 5.2. Mit 5.3 ändert sich allerdings der Name zu d6b62d07bcbabb9aeb9801401ebe0433_fk und der alte Schlüssel bleibt beim Update auf 5.3 in der Datenbank (wcf1_package_installation_sql_log) liegen. Und das wird von unserem Plugin bemängelt.


    Also ja, man kann von einem False-Positive sprechen bzw. das Problem durch Löschen der verwaisten Einträge aus dem SQL-Log lösen.

  • Ich hab das bei dir bereits erledigt. Eine Anleitung für "Laien" werde ich an dieser Stelle allerdings nicht posten, um zu vermeiden, dass sich irgendwer ungewollt seine Installation zerschießt.

  • Das sollte doch vermutlich vom Update Script des WSC selbst erledigt werden, denke ich.

    Gruß aus Südhessen

  • Das sollte doch vermutlich von Update Script der des WSC selbst erledigt werden, denke ich.


    Theoretisch. Allerdings ist nicht abschließend geklärt, ob das wirklich ein "Fehler" ist. Ich bin mir auch nicht ganz sicher, wie die Umbenennung des Schlüssels überhaupt zustande kommt. Alexander Ebert

  • Ah, okay. Hätte ich auch selbst drauf kommen können.


    Dann fehlt im 5.3-Update lediglich eine Routine, um die veralteten FKs aus dem SQL-Log zu entfernen.

  • Ich habe dieses Problem ebenfalls, bedeutet nun das dieser Eintrag selber entfernt werden kann oder man wartet bis Woltlab dies Fixen tut ?

Participate now!

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