Ergebnis 1 bis 6 von 6

Thema: Update Contao 4.4.55 LTS auf 4.9.* LTS

  1. #1
    Contao-Nutzer Avatar von hombo13
    Registriert seit
    06.05.2013.
    Ort
    Schaffhausen
    Beiträge
    58

    Standard Update Contao 4.4.55 LTS auf 4.9.* LTS

    Hallo Forum - ich versuche ein Update von der LTS Version 4.4.55 auf die neue LTS-Version 4.9 zu machen. Ich habe die Installation auf einem Subdomain (Testserver) kopiert. Die Kopie läuft einwandfrei auf 4.4.55 deshalb konnte ich den Contao-Manager starten und ein Update initialisieren (siehe Screenshot). Die Datenbank ist 10.3 Maria-DB und die PHP-Version ist 7.4. Auch die Zugangsdaten habe ich für die neue Test-DB eingerichtet. Es kann nichts passieren.

    Das Update verlangt eine Datenbankaktualisierung die mit der Fehlermeldung „Es ist ein Fehler aufgetreten“ quittiert wird. Ein Blick in das Logfile var/logs/prod-2021-02-08.log zeigt folgendes (gekürzt):

    HTML-Code:
    [2021-02-08 15:53:42] security.INFO: Attempting SimplePreAuthentication. {"key":"frontend","authenticator":"Contao\\CoreBundle\\Security\\ContaoAuthenticator"} []
    [2021-02-08 15:53:42] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "Page not found: https://contao49.komdes.ch/assets/jquery/mediaelement/MEDIAELEMENT/js/mediaelement-and-player.min.js" at /home/komdesc/www/contao49.komdes.ch/vendor/contao/core-bundle/src/EventListener/ExceptionConverterListener.php line 112 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): Page not found: https://contao49.komdes.ch/assets/jquery/mediaelement/MEDIAELEMENT/js/mediaelement-and-player.min.js at /home/komdesc/www/contao49.komdes.ch/vendor/contao/core-bundle/src/EventListener/ExceptionConverterListener.php:112, Contao\\CoreBundle\\Exception\\PageNotFoundException(code: 0): Page not found: https://contao49.komdes.ch/assets/jquery/mediaelement/MEDIAELEMENT/js/mediaelement-and-player.min.js at /home/komdesc/www/contao49.komdes.ch/vendor/contao/core-bundle/src/Resources/contao/controllers/FrontendIndex.php:63)"} []
    [2021-02-08 15:53:42] request.INFO: Matched route "contao_catch_all". {"route":"contao_catch_all","route_parameters":{"_scope":"frontend","_token_check":true,"_controller":"Contao\\CoreBundle\\Controller\\FrontendController::indexAction","_url_fragment":"assets/jquery/colorbox/COLORBOX/js/colorbox.min.js","_route":"contao_catch_all"},"request_uri":"https://contao49.komdes.ch/assets/jquery/colorbox/COLORBOX/js/colorbox.min.js","method":"GET"} []
    [2021-02-08 15:53:42] security.INFO: Attempting SimplePreAuthentication. {"key":"frontend","authenticator":"Contao\\CoreBundle\\Security\\ContaoAuthenticator"} []
    [2021-02-08 15:53:42] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "Page not found: https://contao49.komdes.ch/assets/jquery/colorbox/COLORBOX/js/colorbox.min.js" at /home/komdesc/www/contao49.komdes.ch/vendor/contao/core-bundle/src/EventListener/ExceptionConverterListener.php line 112 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): Page not found: https://contao49.komdes.ch/assets/jquery/colorbox/COLORBOX/js/colorbox.min.js at /home/komdesc/www/contao49.komdes.ch/vendor/contao/core-bundle/src/EventListener/
    
    etc. etc. etc. etc.
    Was läuft hier falsch? Weiss das jemand von euch? Danke für Hinweise.
    Angehängte Grafiken Angehängte Grafiken

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Aktiviere den Debug-Modus, reproduziere den Fehler und poste den Stack Trace.

  3. #3
    Contao-Nutzer Avatar von hombo13
    Registriert seit
    06.05.2013.
    Ort
    Schaffhausen
    Beiträge
    58

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Aktiviere den Debug-Modus, reproduziere den Fehler und poste den Stack Trace.

    Gut. Hier sind 3 Stack Trace:
    In rot steht zuerst: "An exception occurred while executing 'ALTER TABLE tl_module ENGINE = InnoDB ROW_FORMAT = DYNAMIC':
    SQLSTATE[42000]: Syntax error or access violation: 1118 Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline."



    Stack Trace Nr. 1 ->

    HTML-Code:
    Doctrine\DBAL\Exception\DriverException:
    An exception occurred while executing 'ALTER TABLE tl_module ENGINE = InnoDB ROW_FORMAT = DYNAMIC':
    
    SQLSTATE[42000]: Syntax error or access violation: 1118 Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
    
      at vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:128
      at Doctrine\DBAL\Driver\AbstractMySQLDriver->convertException('An exception occurred while executing \'ALTER TABLE tl_module ENGINE = InnoDB ROW_FORMAT = DYNAMIC\':SQLSTATE[42000]: Syntax error or access violation: 1118 Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.', object(Exception))
         (vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php:182)
      at Doctrine\DBAL\DBALException::wrapException(object(Driver), object(Exception), 'An exception occurred while executing \'ALTER TABLE tl_module ENGINE = InnoDB ROW_FORMAT = DYNAMIC\':SQLSTATE[42000]: Syntax error or access violation: 1118 Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.')
         (vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php:159)
      at Doctrine\DBAL\DBALException::driverExceptionDuringQuery(object(Driver), object(Exception), 'ALTER TABLE tl_module ENGINE = InnoDB ROW_FORMAT = DYNAMIC', array())
         (vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:2121)
      at Doctrine\DBAL\Connection->handleExceptionDuringQuery(object(Exception), 'ALTER TABLE tl_module ENGINE = InnoDB ROW_FORMAT = DYNAMIC')
         (vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:1382)
      at Doctrine\DBAL\Connection->query('ALTER TABLE tl_module ENGINE = InnoDB ROW_FORMAT = DYNAMIC')
         (vendor/contao/installation-bundle/src/Database/Installer.php:99)
      at Contao\InstallationBundle\Database\Installer->execCommand('2377d3e675d4636834477c2aabbcb006')
         (vendor/contao/installation-bundle/src/Controller/InstallationController.php:396)
      at Contao\InstallationBundle\Controller\InstallationController->adjustDatabaseTables()
         (vendor/contao/installation-bundle/src/Controller/InstallationController.php:101)
      at Contao\InstallationBundle\Controller\InstallationController->installAction()
         (vendor/symfony/http-kernel/HttpKernel.php:158)
      at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
         (vendor/symfony/http-kernel/HttpKernel.php:80)
      at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
         (vendor/symfony/http-kernel/Kernel.php:201)
      at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
         (web/index.php:31)
      at require('/home/komdesc/www/contao49.komdes.ch/web/index.php')
         (web/app.php:4)
    Strack Trace Nr. 2 (gekürzt)
    HTML-Code:
    Doctrine\DBAL\Driver\PDO\Exception:
    SQLSTATE[42000]: Syntax error or access violation: 1118 Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
    
      at vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDO/Exception.php:18
      at Doctrine\DBAL\Driver\PDO\Exception::new(object(PDOException))
    Stack Trace Nr. 3 gekürzt

    HTML-Code:
    PDOException:
    SQLSTATE[42000]: Syntax error or access violation: 1118 Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
    
      at vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:125
      at PDO->query('ALTER TABLE tl_module ENGINE = InnoDB ROW_FORMAT = DYNAMIC')
         (vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:125)

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Ja, du hast Extensions installiert, die insgesamt zu viele neue Felder zu tl_module hinzufügen.

    Du könntest nun selbst DCA Anpassungen machen und aus einigen VARCHAR(255) Feldern stattdessen TEXT Felder machen. Oder die VARCHAR Felder verkleinern. Ist etwas Handarbeit. Alternativ kannst du aber auch folgendes in dein config.yml schreiben:

    Code:
    doctrine:
        dbal:
            connections:
                default:
                    default_table_options:
                        charset: utf8
                        collate: utf8_unicode_ci
    Danach den Application Cache neu aufabauen und wieder das Install Tool aufrufen (oder contao:migrate ausführen). Nachteil davon ist, dass du keine Emojis (oder sonstige Unicode Spezialzeichen, die 4 byte benötigen) abspeichern kannst.

  5. #5
    Contao-Nutzer Avatar von hombo13
    Registriert seit
    06.05.2013.
    Ort
    Schaffhausen
    Beiträge
    58

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Ja, du hast Extensions installiert, die insgesamt zu viele neue Felder zu tl_module hinzufügen.

    Du könntest nun selbst DCA Anpassungen machen und aus einigen VARCHAR(255) Feldern stattdessen TEXT Felder machen. Oder die VARCHAR Felder verkleinern. Ist etwas Handarbeit. ...

    Danach den Application Cache neu aufabauen und wieder das Install Tool aufrufen (oder contao:migrate ausführen). Nachteil davon ist, dass du keine Emojis (oder sonstige Unicode Spezialzeichen, die 4 byte benötigen) abspeichern kannst.
    Vielen Dank @Spooky, Handarbeit finde ich sauberer, das wird auch empfohlen. Nur ist es so: ich weiss also welche Table nämlich "tl_module" - ABER wo? Ich gehe also zu PhpMyAdmin und wählen den Reiter "Struktur" und dort sehe ich die Felder - also id, pid, tstamp usw. Dort stehen auch die Feldtypen z.B. int, varchar usw. Oder soll man dort alle varchar zu blob umdefinieren? Wäre das ein Ansatz?

    EDIT: Für alle, die auch dies Probleme haben. LÖSUNG: so kann ich die Datenbank aktualisieren - den ersten Haken mit der Tabelle "tl_module" entfernen. Die Aktualisierung der DB nochmals starten und nochmals bis nur noch die Tabelle "tl_module" übrig bleibt. Dann diese letzte Tabelle aktualisieren... und fertig. Alles bestens.
    Geändert von hombo13 (09.02.2021 um 11:09 Uhr)

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Zitat Zitat von hombo13 Beitrag anzeigen
    Vielen Dank @Spooky, Handarbeit finde ich sauberer, das wird auch empfohlen. Nur ist es so: ich weiss also welche Table nämlich "tl_module" - ABER wo? Ich gehe also zu PhpMyAdmin und wählen den Reiter "Struktur" und dort sehe ich die Felder - also id, pid, tstamp usw. Dort stehen auch die Feldtypen z.B. int, varchar usw. Oder soll man dort alle varchar zu blob umdefinieren? Wäre das ein Ansatz?
    In der Datenbank (mit einem Tool deiner Wahl) kannst du dir bequem ansehen, welche Felder welche Definition haben. Die Änderung davon darfst du aber nicht direkt in der Datenbank machen, sondern musst/solltest es über das DCA von Contao machen - ansonsten will dir das Contao Install Tool deine Änderung wieder rückgängig machen.



    Zitat Zitat von hombo13 Beitrag anzeigen
    EDIT: Für alle, die auch dies Probleme haben. LÖSUNG: so kann ich die Datenbank aktualisieren - den ersten Haken mit der Tabelle "tl_module" entfernen. Die Aktualisierung der DB nochmals starten und nochmals bis nur noch die Tabelle "tl_module" übrig bleibt. Dann diese letzte Tabelle aktualisieren... und fertig. Alles bestens.
    Ja stimmt, in manchen Fällen funktioniert das so

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •