Ergebnis 1 bis 14 von 14

Thema: GELÖST: Problem mit Datenbankupdate, will benötigte Felder droppen

  1. #1
    Contao-Nutzer
    Registriert seit
    23.06.2012.
    Beiträge
    72

    Standard GELÖST: Problem mit Datenbankupdate, will benötigte Felder droppen

    Hallo,

    ich habe gerade ein seltsames Problem mit einer Contao-Installation. Es war ein Contao 3.2.18 und ich habe das Install-Tool gestartet, um die Datenbankverbindung von mysql auf mysqli umzustellen. Dabei ist mir aufgefalllen, dass beim Datenbankupdate einige Felder gedroppt werden sollten und zwar in der Tabelle tl_user, z.B. "session", "language"...

    Code:
    ALTER TABLE `tl_user` DROP `google`;
    ALTER TABLE `tl_user` DROP `language`;
    ALTER TABLE `tl_user` DROP `backendTheme`;
    ALTER TABLE `tl_user` DROP `uploader`;
    ALTER TABLE `tl_user` DROP `showHelp`;
    ALTER TABLE `tl_user` DROP `thumbnails`;
    ALTER TABLE `tl_user` DROP `useRTE`;
    ALTER TABLE `tl_user` DROP `useCE`;
    ALTER TABLE `tl_user` DROP `session`;
    Ich hab ihn die Felder dann dummerweise auch mal droppen lassen, darauf war kein Anmelden ans Backend mehr möglich, es gab nur Fehlermeldungen wegen des fehlenden Feldes "session". Als ich das über phpMyAdmin wieder zugefügt habe, konnte ich mich anmelden, aber das Backend war auf englisch. Also auch das Feld "language" wieder zugefügt... langer Rede kurzer Sinn: ganz offensichtlich hätte das Installtool dei Felder nicht droppen dürfen.

    Ich habe nun mehrfach die Installation per automatischem Updaten auf 3.20 geupdaetet, auf 3.2.14 gedowngraded, wieder auf 3.20 geupdatet und schliesslich noch manuell die kompletten Dateien der 3.2.20 von contao.org runtergeladen und die Installation damit überschrieben, in der Hoffnung, dass irgendwelche fehlerhaften Dateien, die dafür verantwortlich sind, dass das Installtool diese Felder droppen will, repariert werden, aber es hat alles nichts gebracht.

    Jetzt ist die Contao Installation auf 3.2.20 und wenn ich das Install-Tool starte will er nach wie vor folgende Felder aus der tl_user droppen:

    Code:
    ALTER TABLE `tl_user` DROP `language`;
    ALTER TABLE `tl_user` DROP `session`;
    Die anderen Felder (s.o.) fehlen in meiner Datenbank, und es wundert mich auch, dass das Install-Tool diese nicht adden will...

    Hat jemand irgendeine Idee woran das liegen kann?

    Grüsse,
    fluppi
    Geändert von fluppi (16.04.2015 um 10:13 Uhr)

  2. #2
    Contao-Urgestein
    Registriert seit
    10.07.2010.
    Beiträge
    4.403
    User beschenken
    Wunschliste

    Standard

    Wenn Du im Backend eine Erweiterung als inaktiv markierst, dann will Contao droppen. Hast Vielleicht eine Erweiterung als inaktiv markiert?

    Wenn die wieder aktivierst sollte Contao in der BD wieder adden.


    So neben bei Contao 3.20 gibt es noch nicht. Muss wohl 3.2.20 sein


  3. #3
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    war das mal ne Contao 2.x Version gewesen?
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  4. #4
    Contao-Nutzer
    Registriert seit
    23.06.2012.
    Beiträge
    72

    Standard

    @ciaobello: Es sind keine Erweiterungen inaktiv, abgesehen davon handelt es sich bei ja bei den Feldern um Felder aus dem Contao-Core.
    @bugbuster: Nein das war immer eine 3.2.x

    Mir ist jetzt noch etwas komisches aufgefallen. Ich bin mal im Backend in die Erweiterungsverwaltung gegangen und habe dort "Datenbank aktualisieren" aufgerufen. Seltsamerweise wurden mir dann die korrekten Änderungen an der DB vorgeschlagen, die ich dann auch durchgeführt habe. In der Erweiterungsverwaltung bekomme ich nun angezeigt, dass die Datenbank aktuell ist. Im Install-Tool dagegen will er nach wie vor die genannten Felder aus der "tl_user" löschen.

    Ich hätte ja gedacht, dass die Datenbank-Aktualisierungs-Routine in der Erweiterungsverwaltung mit der im Install-Tool identisch ist.

  5. #5
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    Bei zwei meiner geprüften Installationen (3.2.19, MySQL) zeigt die Datenbankaktualisierung im BE als auch im Installtool dieselben Felder/Tabellen. Ich möchte jetzt allerdings nicht versuchen auf MySQLi umzustellen...
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  6. #6
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.078
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Wie auch immer, ich würde mal vom Contao-Check die Installation prüfen lassen. Normal ist das nicht, dass die install.php diese Tabellen droppen will. Hatte ich jedenfalls noch nie bisher. Mag schon sein, dass das unterschiedlich funktioniert bei install.php und übers BE. Install.php muss schliesslich auch mit einer Datenbank klarkommen, die entweder leer ist oder überflüssige / alte Core-Tabellen enthält. Die Erweiterungsverwaltung im BE muss das nicht, zumindest nicht im gleichen Umfang.

  7. #7
    Contao-Nutzer
    Registriert seit
    23.06.2012.
    Beiträge
    72

    Standard

    Contao-Check findet keine Probleme...

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

    Standard

    Man müsste sich deine Installation mal im Detail ansehen.

  9. #9
    Contao-Nutzer
    Registriert seit
    23.06.2012.
    Beiträge
    72

    Standard

    Hab die Ursache des Probelms gefunden... in meiner dcaconfig.php steht folgendes:

    PHP-Code:
    // Nicht-Admins sollen bestimmte Felder in den "persoenlichen Einstellungen" nicht aendern koennen

    if (!$this->User->isAdmin)
    {
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['useRTE']); 
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['google']); 
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['language']); 
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['backendTheme']); 
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['uploader']); 
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['showHelp']);
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['thumbnails']); 
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['useCE']);  
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['session']); 
        
    $GLOBALS['TL_DCA']['tl_user']['palettes']['login'] = '{name_legend},name,email;{password_legend},password';

    Ab irgendeiner Version von Contao, wschl. der 3.2.18, führt das zu dem beschriebenen Problem...

  10. #10
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Kann man die nicht einfach auf readonly setzen per DCA Definition? Ich bin mir jetzt nicht sicher.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  11. #11
    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 fluppi Beitrag anzeigen
    Hab die Ursache des Probelms gefunden... in meiner dcaconfig.php steht folgendes:

    PHP-Code:
    // Nicht-Admins sollen bestimmte Felder in den "persoenlichen Einstellungen" nicht aendern koennen

    if (!$this->User->isAdmin)
    {
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['useRTE']); 
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['google']); 
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['language']); 
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['backendTheme']); 
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['uploader']); 
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['showHelp']);
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['thumbnails']); 
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['useCE']);  
        unset(
    $GLOBALS['TL_DCA']['tl_user']['fields']['session']); 
        
    $GLOBALS['TL_DCA']['tl_user']['palettes']['login'] = '{name_legend},name,email;{password_legend},password';

    Ab irgendeiner Version von Contao, wschl. der 3.2.18, führt das zu dem beschriebenen Problem...
    Dann ist es klar warum Contao die felder droppen will. Und das sollte eigentlich bei allen Contao Versionen ab 3.x passieren, da du hier das ganze field aus dem DCA entfernst. Vielleicht ist dir das aufgrund des DCA cache nie aufgefallen.


    Zitat Zitat von BugBuster Beitrag anzeigen
    Kann man die nicht einfach auf readonly setzen per DCA Definition? Ich bin mir jetzt nicht sicher.
    Ja, es gibt eval => array('readonly',true), wird aber nicht von allen Feldern unterstützt (laut Dokumentation). Ich schätze da geht es hauptsächlich um Text Input Felder und vielleicht Selects.

  12. #12
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Setze in den Feldern den inputType auf "hidden" anstatt die Felder zu unsetten.
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  13. #13
    Contao-Nutzer
    Registriert seit
    23.06.2012.
    Beiträge
    72

    Standard

    Hab grad rausgefunden, dass es für unsere Zwecke völlig ausreicht, die fraglichen Felder aus der Palette rauszunehmen, also:

    PHP-Code:
    // Nicht-Admins sollen bestimmte Felder in den "persoenlichen Einstellungen" nicht aendern koennen

    if (!$this->User->isAdmin)
    {
        
    $GLOBALS['TL_DCA']['tl_user']['palettes']['login'] = '{name_legend},name,email;{password_legend},password';

    Dann sehen Nicht-Admins im Backend nur diese Felder, aber im DCA sind sie noch vorhanden und somit stimmt auch alles im Install-Tool.

  14. #14
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Stimmt, das passiert mir ja öfters, das ich Felder anlege und mich wundere warum die nicht angezeigt werden.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

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
  •