Could not execute prepared statement: SQLSTATE[42000]

  • Hallo zusammen,


    nach einem Umzug meines Forums habe ich Probleme mit den Updates. Bei der Ausführung wird mir der Fehler:

    Code
    Could not execute prepared statement: SQLSTATE[42000]: Syntax error or access violation: 1091 Can't DROP 'af41d48c234cc7d1cba07c18b61faff2_fk'; check that column/key exists



    um die Ohren geschlagen.


    Der Fehler tritt jeweils für jede Aktualisierungen auf.


    Hilfe wäre super :)

  • hm, spielt das eine Rolle?


    Ich bin so vorgegangen:


    1. Datenbank exportiert
    2. Datenbank auf dem neuen Server angelegt und die SQL-Datei importiert
    3. Per FTP die Webseiten-Dateien heruntergeladen
    4. die Config angepasst
    5. Webseiten-Daten auf den neuen Server hochgeladen

  • 4. die Config angepasst

    Ne nicht direkt, mir ging es nur um den part weil viele das vergessen ;)


    Es scheinen bei dir einige Foreign keys nicht mehr vorhanden zu sein...
    Sicher dass das Backup und dann das wiederherstellen sauber durchgelaufen ist?


    Funktioniert das Forum auf dem alten Webspace noch?
    Vielleicht das Backup erneut durchführen.
    Wenn du da Hilfe braucsht meld dich mal per PN

  • Ja, das Forum läuft ohne Probleme. Nur die Updates zicken. Auf dem alten Webspace ist nichts mehr.
    Prüfe jetzt mal ob die Datenbank auch wirklich vollständig übernommen wurde.

  • @Rewinside Server Dort scheinen ja überall irgendwelche foreign keys zu fehlen.


    Das ist insofern problematisch, als dass diese die Integrität der Daten von diesen gewahrt wird und sich das System eben darauf verlässt. Von alleine können diese nicht verschwinden, zudem existieren diese Keys schon von Anfang an und sind nicht erst mit einem Update dazu gekommen.


    Es wäre ratsamer eine Neuinstallation mit anschließendem Import vorzunehmen. Zuvor sollte jedoch die Ursache in Erfahrung gebracht werden, die dazu führt, dass die Datenbank beschädigt wird.

    Ich sehe gerade, es fehlen bei dir offensichtlich alle Foreign Keys! Etwas derartiges habe ich nur gesehen, wenn InnoDB nicht verfügbar war und MySQL auf MyISAM gewechselt hat, MyISAM unterstützt keine foreign keys.

    Die Foreign Keys sind nicht nur Deko die man nach belieben an den Baum hängen kann. Sie garantieren die Integrität der Daten untereinander, wenn diese auf einmal fehlen, ist diese Konsistenz nicht mehr gewährleistet und das Verhalten der Software im Ganzen ist dann schlicht undefiniert und kann zu bleibenden Schäden führen die selbst nach der Wiederherstellung der Foreign Keys fortbestehen.


    Dazu kommt noch, dass es beim Anlegen der verschiedenen Keys (es sind sehr, sehr viele) mit an Sicherheit grenzender Wahrscheinlichkeit zu Konflikten kommt. Wenn du auf Basis eines Abgleichs mit einer frischen Installation nicht herausbekommst, welche Keys es wo und in welcher Reihenfolge anzulegen gilt, dann wirst du auch diese Konflikte nicht lösen können.


    Es bleibt bei meiner Empfehlung: Neuinstallation mit anschließendem Datenimport.

    Es Scheint wirkllich an den Foreign keys zu liegen.


    Hast du viele Plugins installiert?


    Also Alex empfiehlt in einem anderen Thema eine neuintallation und danach deine aktuelle fehlerhafte DB zu importieren.
    Ansonsten bekommst ud die foreign keys so gut wie gar nicht wiederhergestellt.

  • Ok, man sieht schon bei der Installation das es Rechte-Probleme gibt.


    Beim Verbindungsversuch mit der Datenbank ist folgender Fehler aufgetreten:
    Connecting to MySQL server 'localhost' failed: SQLSTATE[HY000] [1044] Access denied for user 'xxxxx'@'%' to database 'wcf'


    Die Datenbank ist ganz neu und ich kann über die üblichen Wege darauf zugreifen - nur über die Installation nicht :(

  • Die Zugangsdaten sind schlichtweg falsch.

    Ja, stimmt.


    Nach der Neuinstallation (funktioniert) habe ich versucht die Datenbank über den MySQLDumper wieder zu importieren.
    Dabei wird mir diese Fehlermeldung um die Ohren geschlagen:


    Code
    MySQL meldet:
    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 'TYPE=InnoDB' at line 57
    
    
    
    
    Fehler bei der Anfrage:
    CREATE TABLE `wbb1_board` ( `boardID` int(10) NOT NULL, `parentID` int(10) DEFAULT NULL, `position` smallint(5) NOT NULL DEFAULT '0', `boardType` tinyint(1) NOT NULL DEFAULT '0', `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `description` mediumtext COLLATE utf8_unicode_ci, `descriptionUseHtml` tinyint(1) NOT NULL DEFAULT '0', `externalURL` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `time` int(10) NOT NULL DEFAULT '0', `countUserPosts` tinyint(1) NOT NULL DEFAULT '1', `daysPrune` smallint(5) NOT NULL DEFAULT '0', `enableMarkingAsDone` tinyint(1) NOT NULL DEFAULT '0', `ignorable` tinyint(1) NOT NULL DEFAULT '1', `isClosed` tinyint(1) NOT NULL DEFAULT '0', `isInvisible` tinyint(1) NOT NULL DEFAULT '0', `postSortOrder` varchar(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `postsPerPage` smallint(5) NOT NULL DEFAULT '0', `searchable` tinyint(1) NOT NULL DEFAULT '1', `searchableForSimilarThreads` tinyint(1) NOT NULL DEFAULT '1', `showSubBoards` tinyint(1) NOT NULL DEFAULT '1', `sortField` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `sortOrder` varchar(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `styleID` int(10) DEFAULT NULL, `threadsPerPage` smallint(5) NOT NULL DEFAULT '0', `clicks` int(10) NOT NULL DEFAULT '0', `posts` int(10) NOT NULL DEFAULT '0', `threads` int(10) NOT NULL DEFAULT '0' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
  • Ich habe wohl den selben Fehler -.-
    Jedoch hab ich nicht das Forum umgezogen oder irgendwas in die Richtung


    Wie kann sich die Datenbank von selber so zerschießen, dass man Sie gleich neuinstallieren muss?

  • Nach der Neuinstallation (funktioniert) habe ich versucht die Datenbank über den MySQLDumper wieder zu importieren.Dabei wird mir diese Fehlermeldung um die Ohren geschlagen:


    Code
    MySQL meldet:
    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 'TYPE=InnoDB' at line 57


    Das sieht so aus, alsob Dein SQL-Server keine InnoDB-Tabelle mag. Du sagt jetzt aber, dass die Installation erfolgreich war?! Hast Du denn mal überprüft, ob bei der Installation die Tabellen als InnoDB angelegt wurden? Oder hat es während der Installation einen silent fall back auf MyISAM gegeben? Das würde mich dann wundern, dass das in der Installation dann nicht auffällt.


    Du kannst das übrigens mit einem SHOW CREATE TABLE prüfen; such Dir einfach ein paar Tabellen frisch nach der Installation aus, und guck mal welche Storage-Engine (InnoDB oder MyISAM) für die Tabellen genutzt wird.

  • Ja, die Tabellen wurden als InnoDB angelegt.
    Habe jetzt mal versucht die SQL im Format ISO 8859-2 zu importieren. Bis zur Tabelle "wcf1_user_to_language" ist alles gut. Und bei der Überprüfung kommt dann die Meldung:


    Code
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -> Variable 'character_set_client' can't be set to the value of 'NULL'

    Die gleiche Meldung kommt aber auch wenn ich über UFT8 importiere.



    Da mir jetzt nichts anderes mehr einfällt, lasse ich gerade im alten Hosting die Webdaten, inkl. Datenbanken, wiederherstellen.
    Ich hoffe das ich dann durch einen erneuten Export der DB noch etwas retten kann. Immerhin ist da Forum schon ein paar Jahre alt und und beherbergt rund 12.000 User.



    Du kannst das übrigens mit einem SHOW CREATE TABLE prüfen; such Dir einfach ein paar Tabellen frisch nach der Installation aus, und guck mal welche Storage-Engine (InnoDB oder MyISAM) für die Tabellen genutzt wird.

    Und ja, beim Anlegen von neuen Tabellen wird InnoDB verwendet.

  • Hallo zusammen,


    komisch das auf einmal Probleme mit den "Foreign keys" auftreten!! -- hatte ja auch das Problem letztes Update nicht installieren zu können, und ohne Forenumzug usw....fehlen auf einmal an mehren Stellen die besagten key`s.


    Habe mein Problem gelöst indem ich die fehlerbringenden Tabellen mit älteren überschrieben habe...


    viel Erfolg -- vlt. funktioniert es auch bei Dir..

  • Ok, ich gebe so langsam aber sicher auf. Habe alles durchprobiert. Auch ein Export und Import des alten Servers (html und sql) führen immer zum gleichen Ergebnis.


    Vielleicht gibt es ja doch ein Problem mit dem Update.... Bei mir ist es reibungslos durchgelaufen.

    Die Befürchtung habe ich mittlerweile auch.


    Kann aber derzeit kein Updates mehr fahren da diese aus der Aktualisierungsliste verschwunden ist.
    Kann ich das irgendwie manuell prüfen?

    Edited once, last by xeorx ().

  • Schick mir mal deine FTP/ACP/mySQL Zugangsdaten dann kann ich mal schauen.


    EDIT:
    ich weiß nicht wieso aber es fehlten irgendwie Forein keys.
    Ich habe die besagten Tabellen wieder hergestellt mit der aus dem WBB 4.1.10 Installations paket und folgendem Befehlen:



    @Alexander Ebert wie können denn solche keys einfach verschwinden?
    Schon merkwürdig, jedenfalls funktioniert wieder alles und das Update auf WCF 2.1.11/WBB 4.1.11 und Blog /Galerie sind reibungslos verlaufen

    • Official Post

    wie können denn solche keys einfach verschwinden?

    Wenn die Tabelle aus irgendeinem Grund mal auf "MyISAM" stand werden die Foreign Keys stillschweigend entfernt und sind ab dann verloren. Das kann passieren wenn beispielsweise nach einem Umzug das neue System InnoDB deaktiviert hat oder der Import der Tabellen nicht korrekt ablief, etwa als MyISAM angelegt statt InnoDB. Von alleine verschwindet da jedenfalls nichts.

Participate now!

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