Page 1 of 2

Previous migrations

Posted: Fri 3. Mar 2017, 09:02
by pete13
Hallo zusammen,

nachdem mein Update auf 3.2 letztens gescheitert ist, habe ich festgestellt, dass ich noch gar nicht auf 3.1 gegangen war.
Wollte das nun erledigen bekomme allerdings beim Aufruf von

Code: Select all

php bin/console doctrine:migrations:migrate
die folgende Meldung/Warnung
WARNING! You have 4 previously executed migrations in the database that are not registered migrations.
>> 2016-11-23 21:19:00 (20161123211900)
>> 2016-12-08 21:58:00 (20161208215800)
>> 2016-12-09 17:32:00 (20161209173160)
>> 2016-12-24 17:32:00 (20161224173160)
Are you sure you wish to continue? (y/n)
Gibt es hier einen Weg wie man die Migrations registrieren kann oder spielt das keine Rolle?
Wenn ich das Update trotz der Meldung ausführe bekomme ich angezeigt das keine Migration durchgeführt wurde.
Ich würde noch Logfiles anhängen allerdings gibt es in var/cache/logs keine und die Webserverlogs sind hierbei wohl nicht relevant.
Vermutlich hängt mit diesem Fehler auch das Problem des Update auf 3.2 zusammen.

Beste Grüße

Re: Previous migrations

Posted: Fri 3. Mar 2017, 09:36
by laufhannes
Beim Update auf 3.2 sollten die Migrations für 3.1 ebenfalls durchgeführt worden sein (und das auch in der richtigen Reihenfolge). Daher werden beim nachträglichen Update auf 3.1 keine neuen Migrations angezeigt. Die obige Warnung beschreibt lediglich, dass die Migrationen in der Datenbank bereits eingetragen sind, obwohl keine dazugehörigen Dateien existieren (da du ja vom Code her wieder auf die 3.1 bist).

Prinzipiell sollte auf dem gesamten 3er-Versionszweig ein Update von 3.0 auf eine beliebige 3.x in einem Schwung funktionieren. Viele Tests investieren wir diesbezüglich aber nicht selbst.

Rein von der Datenbank her sollte also alles funktionieren.

Re: Previous migrations

Posted: Fri 3. Mar 2017, 10:03
by pete13
Vielen Dank für die Erklärung.
Gut. Also wäre der update Befehl quasi nicht mehr notwendig?
Habe dann jetzt die 3.2 Daten mal in mein Verzeichnis gepackt und die Seite geladen.
Unter /update bekomme ich die Nachricht das kein Update notwendig ist.
Unter /admin.php wird mir als Version oben in der Ecke 3.2.0 angezeigt.
Annmeldeformular lädt und ich erhalte die Meldung.
Die Authentifikation konnte wegen eines Systemproblems nicht bearbeitet werden.
Im prod.log steht drin:

Code: Select all

request.CRITICAL: Uncaught PHP Exception Doctrine\DBAL\Exception\InvalidFieldNameException: "An exception occurred while executing 'SELECT t0.id AS id_1, t0.username AS username_2, t0.name AS name_3, t0.mail AS mail_4, t0.language AS language_5, t0.timezone AS timezone_6, t0.gender AS gender_7, t0.birthyear AS birthyear_8, t0.password AS password_9, t0.salt AS salt_10, t0.registerdate AS registerdate_11, t0.lastaction AS lastaction_12, t0.changepw_hash AS changepw_hash_13, t0.changepw_timelimit AS changepw_timelimit_14, t0.activation_hash AS activation_hash_15, t0.deletion_hash AS deletion_hash_16, t0.allow_mails AS allow_mails_17, t0.allow_support AS allow_support_18, t0.role AS role_19 FROM runalyze_account t0 WHERE t0.id = ?' with params [1]:  SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.gender' in 'field list'" at /var/www/runalyze.domain.tld/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php line 71 {"exception":"[object] (Doctrine\\DBAL\\Exception\\InvalidFieldNameException(code: 0): An exception occurred while executing 'SELECT t0.id AS id_1, t0.username AS username_2, t0.name AS name_3, t0.mail AS mail_4, t0.language AS language_5, t0.timezone AS timezone_6, t0.gender AS gender_7, t0.birthyear AS birthyear_8, t0.password AS password_9, t0.salt AS salt_10, t0.registerdate AS registerdate_11, t0.lastaction AS lastaction_12, t0.changepw_hash AS changepw_hash_13, t0.changepw_timelimit AS changepw_timelimit_14, t0.activation_hash AS activation_hash_15, t0.deletion_hash AS deletion_hash_16, t0.allow_mails AS allow_mails_17, t0.allow_support AS allow_support_18, t0.role AS role_19 FROM runalyze_account t0 WHERE t0.id = ?' with params [1]:\n\nSQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.gender' in 'field list' at /var/www/runalyze.domain.tld/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:71, Doctrine\\DBAL\\Driver\\PDOException(code: 42S22): SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.gender' in 'field list' at /var/www/runalyze.domain.tld/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:93, PDOException(code: 42S22): SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.gender' in 'field list' at /var/www/runalyze.domain.tld/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:91)"} []
Hier noch eine Idee wo ich ansetzen kann?

Re: Previous migrations

Posted: Fri 3. Mar 2017, 10:10
by mipapo
Doch da wird noch ein Update notwendig sein:
"Unknown column 't0.gender' in 'field list'"
Das sind die Updates die von 3.0->3.1 bei dir fehlen.
Hast du nach "Are you sure you wish to continue? (y/n)" dann auch "y" eingegeben?

Re: Previous migrations

Posted: Fri 3. Mar 2017, 10:26
by pete13
Ja das habe ich gemacht und die Meldung bekommen.
No migrations to execute.

Code: Select all

php bin/console doctrine:migrations:status
zeigt auch an das ich auf der letzten Version bin.

Code: Select all

== Configuration
(...)
    >> Previous Version:                                2016-12-09 17:32:00 (20161209173160)
    >> Current Version:                                  2016-12-24 17:32:00 (20161224173160)
    >> Next Version:                                       Already at latest version
    >> Latest Version:                                     2016-12-24 17:32:00 (20161224173160)
    >> Executed Migrations:                          15
    >> Executed Unavailable Migrations:    0
    >> Available Migrations:                          15
    >> New Migrations:                                  0
Das Problem liegt darin, dass ich beim Versuch mich anzumelden die Meldung
Die Authentifikation konnte wegen eines Systemproblems nicht bearbeitet werden.
bekomme und mich daher nicht anmelden kann.

Re: Previous migrations

Posted: Fri 3. Mar 2017, 10:29
by mipapo
Wie gesagt. In der Fehlermeldung steht:

Code: Select all

Unknown column 't0.gender' in 'field list'
Die Spalte "gender" scheint in der Tabelle _account zu fehlen. Heißt also, dass bei dir nicht alle Migrations erfolgreich liefen. Eigentlich sollten sie dann auch nicht als "executed" eingetragen sein.

Wenn "gender" als Spalte vorhanden sein sollte, dann lösche nochmal den Cache in var/cache/doctrine & var/cache/prod

Mithilfe von

Code: Select all

php bin/console doctrine:migrations:execute 20160830124637
kannst du die Migration, bei der das Feld "Gender" hinzugekommen ist, nochmal ausführen. Ich denke aber, dass bei dir auch andere Migrations fehlen.

https://github.com/Runalyze/Runalyze/bl ... 124637.php

Re: Previous migrations

Posted: Fri 3. Mar 2017, 10:38
by pete13
Die Spalte "gender" scheint in der Tabelle _account zu fehlen.
Das ist klar. Habe ich geprüft.
Spalte "gender" ist vorhanden.
Cache gelöscht, Seite neu geladen. Fehlermeldung im log ist weg.
Anmeldeversuch schlägt dennoch fehl mit der mehrfach genannten Meldung.

Re: Previous migrations

Posted: Fri 3. Mar 2017, 10:44
by mipapo
Wird vermutlich weiterhin dieses Problem dann sein? viewtopic.php?f=45&t=654&p=2869#p2869

Leider ist der Fehler schwer zu diagnostizieren, sodass ich aus der Ferne nicht weiterhelfen kann, wenn keine Logmeldungen dazu auftauchen.

Re: Previous migrations

Posted: Fri 3. Mar 2017, 11:04
by pete13
Ja ich nehme das wird damit zusammenhängen.
Hattest du ja schon gesagt, dass sich die Meldung schlecht debuggen lässt.
Meine Vermutung ist das die Migration nicht komplett durchgelaufen ist aber trotzdem als 'executed' markiert wurde. (Warum auch immer)
Mal angenommen ich installiere runalyze jetzt in Version 3.2 frisch woanders und spiele dann meinen sql dump ein, hole ich mir damit auch den Fehler zurück?
Theoretisch nicht oder habe ich da gerade einen Denkfehler?

Re: Previous migrations

Posted: Fri 3. Mar 2017, 11:11
by mipapo
Dein SQL Dump entspricht jetzt aber (wahrscheinlich) nicht der richtigen Datenbankstruktur der Version 3.2, wenn aktuell nicht alle Migrations durchgeführt worden sind. Das heißt, dass du auch den Dump nicht einspielen können wirst