Ankündigung

Einklappen
Keine Ankündigung bisher.

Nach Update 4.13.43 auf 5.3.8 -> SQLState Fehler bei Arbeiten mit PCT IEs

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Nach Update 4.13.43 auf 5.3.8 -> SQLState Fehler bei Arbeiten mit PCT IEs

    Moin zusammen,

    ich habe (zu Fuß) eine laufende Seite unter 4.13.43 zunächst auf aktuelles EX5 gebracht und dann auf Contao 5.3.8 aktualisiert. Lief soweit problemlos. Die Seite ist da und läuft fehlerfrei.

    Aber ... Wenn ich PCT Inhaltselemente bearbeite, dann erscheint nach dem Speichern die Meldung:

    Code:
    An exception occurred while executing a query: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
    (siehe auch Bild unten)


    Wenn ich das Backend refreshe, dann kann ich weiter arbeiten und die Inhaltsänderung ist auch im Frontend zu sehen.

    Wenn ich ein neues PCT! Inhaltselement anlege, knallt der Fehler sofort rein und ich kann das Backend nicht wieder anzeigen lassen. Erst wenn ich hart in der DB, den angefangenen Content-Eintrag lösche, geht es wieder weiter.

    Das passiert sowohl mit "euren" Inhaltselementen als auch mit selbst erstellten (PCT-) Inhaltselementen. Wenn ich ein Inhaltselement von Contao selbst verwende, funktioniert das fehlerfrei.

    Irgendeine Idee was das sein könnte?

    Hier noch mal das Fehlerlog dazu:

    HTML-Code:
    [2024-05-10T15:29:53.766174+02:00] request.INFO: Matched route "contao_backend". {"route":"contao_backend","route_parameters":{"_ro ute":"contao_backend","_scope":"backend","_token_c heck":true,"_controller":"Contao\\CoreBundle\\Cont roller\\BackendController::mainAction"},"request_u ri":"https://killinger.gb-projekt.de/contao?act=edit&do=article&id=1389&ref=LCzFVtm-&rt=55f642b04a4ffb.bQbaxleQQgkrSkJvtn0Wct9mfumxNki MwofzKf6knX8.QD62nyX0en5FOQM88zJfHLIjG7CJfwD6kcmhd q_g6CccYo6eJ9h0fUomIQ&table=tl_content","method":" GET"} {"request_uri":"https://killinger.gb-projekt.de/contao?act=edit&do=article&id=1389&ref=LCzFVtm-&rt=55f642b04a4ffb.bQbaxleQQgkrSkJvtn0Wct9mfumxNki MwofzKf6knX8.QD62nyX0en5FOQM88zJfHLIjG7CJfwD6kcmhd q_g6CccYo6eJ9h0fUomIQ&table=tl_content","request_m ethod":"GET"}
    [2024-05-10T15:29:53.865512+02:00] request.CRITICAL: Uncaught PHP Exception Doctrine\DBAL\Exception\DriverException: "An exception occurred while executing a query: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens" at ExceptionConverter.php line 117 {"exception":"[object] (Doctrine\\DBAL\\Exception\\DriverException(code: 0): An exception occurred while executing a query: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens at /var/www/clients/client1/web312/web/vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php:117)\n[previous exception] [object] (Doctrine\\DBAL\\Driver\\PDO\\Exception(code: 0): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens at /var/www/clients/client1/web312/web/vendor/doctrine/dbal/src/Driver/PDO/Exception.php:28)\n[previous exception] [object] (PDOException(code: HY093): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens at /var/www/clients/client1/web312/web/vendor/doctrine/dbal/src/Driver/PDO/Statement.php:130)"} {"request_uri":"https://killinger.gb-projekt.de/contao?act=edit&do=article&id=1389&ref=LCzFVtm-&rt=55f642b04a4ffb.bQbaxleQQgkrSkJvtn0Wct9mfumxNki MwofzKf6knX8.QD62nyX0en5FOQM88zJfHLIjG7CJfwD6kcmhd q_g6CccYo6eJ9h0fUomIQ&table=tl_content","request_m ethod":"GET"}
    [2024-05-10T15:29:53.876080+02:00] messenger.INFO: Sending message Contao\CoreBundle\Messenger\Message\SearchIndexMes sage with contao_prio_low sender using Contao\CoreBundle\Messenger\Transport\AutoFallback Transport {"class":"Contao\\CoreBundle\\Messenger\\Message\\ SearchIndexMessage","alias":"contao_prio_low","sen der":"Contao\\CoreBundle\\Messenger\\Transport\\Au toFallbackTransport"} {"request_uri":"https://killinger.gb-projekt.de/contao?act=edit&do=article&id=1389&ref=LCzFVtm-&rt=55f642b04a4ffb.bQbaxleQQgkrSkJvtn0Wct9mfumxNki MwofzKf6knX8.QD62nyX0en5FOQM88zJfHLIjG7CJfwD6kcmhd q_g6CccYo6eJ9h0fUomIQ&table=tl_content","request_m ethod":"GET"}
    [2024-05-10T15:29:53.876189+02:00] messenger.INFO: Received message Contao\CoreBundle\Messenger\Message\SearchIndexMes sage {"class":"Contao\\CoreBundle\\Messenger\\Message\\ SearchIndexMessage"} {"request_uri":"https://killinger.gb-projekt.de/contao?act=edit&do=article&id=1389&ref=LCzFVtm-&rt=55f642b04a4ffb.bQbaxleQQgkrSkJvtn0Wct9mfumxNki MwofzKf6knX8.QD62nyX0en5FOQM88zJfHLIjG7CJfwD6kcmhd q_g6CccYo6eJ9h0fUomIQ&table=tl_content","request_m ethod":"GET"}
    [2024-05-10T15:29:53.876728+02:00] messenger.INFO: Message Contao\CoreBundle\Messenger\Message\SearchIndexMes sage handled by Contao\CoreBundle\Messenger\MessageHandler\SearchI ndexMessageHandler::__invoke {"class":"Contao\\CoreBundle\\Messenger\\Message\\ SearchIndexMessage","handler":"Contao\\CoreBundle\ \Messenger\\MessageHandler\\SearchIndexMessageHand ler::__invoke"} {"request_uri":"https://killinger.gb-projekt.de/contao?act=edit&do=article&id=1389&ref=LCzFVtm-&rt=55f642b04a4ffb.bQbaxleQQgkrSkJvtn0Wct9mfumxNki MwofzKf6knX8.QD62nyX0en5FOQM88zJfHLIjG7CJfwD6kcmhd q_g6CccYo6eJ9h0fUomIQ&table=tl_content","request_m ethod":"GET"}

    Vielen Dank!!


    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 2024-05-10 15_30_16-Internal Server Error.png
Ansichten: 150
Größe: 31,1 KB
ID: 29126

  • #2
    Was es sein kann, weiss ich nicht. Ich konnte es nicht reproduzieren.

    Die Meldung besagt, dass in einem SQL Query mehr Parameter gesetzt sind als Tokens übergeben.

    Hier ein Beispiel: Würde auslösen, weil nur ein Token gesetzt aber 2 Parameter angesprochen
    Code:
    \Contao\Database::getInstance()->prepare("SELECT * FROM tl_member WHERE id=?")->limit(1)->execute($param1,$param2);
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Moin, was der Fehler bedeutet und wie ICH ihn provozieren könnte, ist klar . Aber die Frage ist natürlich, warum er auftritt, wenn ich PCT Elemente anfasse und sonst nicht. Ich hate gehofft, dass euch das schon mal untergekommen ist.

      Kommentar


      • #4
        Debug steigt so aus:
        Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 2024-05-10 17_09_48-An exception occurred while executing a query_ SQLSTATE[HY093]_ Invalid paramete.png
Ansichten: 121
Größe: 239,3 KB
ID: 29131

        Der markierte Fehler im Detail:

        Code:
        [LIST=1][*]{[*]// log[*]System::getContainer()->get('monolog.logger.contao.general')->info( 'CustomElement has been saved: '.$strTable.'.id='.$intPid );[*]// delete the vault entry[*]$objVault = $objDatabase->prepare("SELECT * FROM ".static::$strTable." WHERE pid=? AND source=? AND type=? ".($intGenericAttribute ? " AND attr_id=? " : "") )->limit(1)->execute($intPid,$strTable,'wizard',$intGenericAtt ribute);[*]if($objVault->numRows > 0)[*]{[*]$objDatabase->prepare("DELETE FROM ".static::$strTable." WHERE id=?")->execute($objVault->id);[*]System::getContainer()->get('monolog.logger.contao.general')->info( 'Vault entry id='.$objVault->id.' has been deleted.' );[*]}[/LIST]

        Kommentar


        • #5
          Hier ist z.B: ein solcher Fehler wo mehr Parameter als erforderlich angegeben sind:

          PHP-Code:
          Executing statementSELECT FROM tl_pct_customelement_vault WHERE pid=? AND source=? AND type=? LIMIT 0,(parameters: {params}, types: {types})
          "sql""SELECT * FROM tl_pct_customelement_vault WHERE pid=? AND source=? AND type=? LIMIT 0,1""params": { "1""102""2""tl_content""3""wizard""4"}, "types": { "1"2"2"2"3"2"4"} } 

          Warum wird hier überhaupt die _vault Tabelle noch abgefragt? Dachte die wäre seit einiger Zeit überflüssig?

          Kommentar


          • #6
            Die Tabelle wird auch seit CE4.0 Zeiten nicht mehr angelegt . Die Tabelle verblieb aber als Fallback im System und wird erst nach Beendigung der Vault-Migration geleert.
            Was war denn die Ursprungs-EX-Version?
            http://www.premium-contao-themes.com

            Kommentar


            • #7
              Ich hab's angepasst. Das dient imgrunde dem Löschen der alten Einträge in der alten vault Tabelle, wenn ein CE Eintrag neu gespeichert wird und wird nur ausgelöst, wenn es die tl_pct_customelement_vault Tabelle noch gibt. -> ältere Installation, wo ggf. noch die Vault Migration nicht ausgeführt wurde oder noch verwaiste Einträge darin schlummern.

              Ändere die Zeile in:
              Code:
              $objVault = $objDatabase->prepare("SELECT * FROM ".static::$strTable." WHERE pid=? AND source=? AND type=? ".($intGenericAttribute ? " AND attr_id=".$intGenericAttribute : "") )->limit(1)->execute($intPid,$strTable,'wizard');
              Zuletzt geändert von Tim; 11.05.2024, 12:17.
              http://www.premium-contao-themes.com

              Kommentar


              • #8
                Moin Tim, oke, danke für die Klarstellung. Das ist bei uns auf jeden Fall noch älteren Ursprungs. Wegen der vielen eigenen Erweiterungen /IEs haben wir ein eigenes Quicksetup und das ist sicher schon zu frühen 4.9 Zeiten entstanden. Ich muss das jetzt für C5 mal auffrischen ;-)

                Ich habe nun die Tabelle einfach rausgehauen und die Meldungen sind wech. Alles gut erst mal soweit. Vielen Dank!

                Kommentar

                Lädt...
                X