Update auf v0.6 ergibt ein Error

Hi, unser ursprüngliches Problem war, dass auf unser Map keine farbigen Striche zu sehen waren, hat man auf eine Straße geklickt, kamen aber alle Daten in der Auswertung. Daraufhin haben wir festgestellt, dass wir nicht auf der neuesten Version vom portal sind und wollten updaten. git pull hat gut funktioniert, aber als wir dann die migration skripte (tools/upgrade.py) laufen lassen wollten, kam ein Fehler: Das Skript verwendet nicht die config.dev.py im api Ordner, sondern probiert Keys wie LEAN_MODE in /usr/local/lib/python3.8/dist-packages/sanic/config.py zu finden. Hat irgendjemand eine Idee, wie man python sagt, dass es diese config verwenden soll?

Unsere Installation läuft ohne Docker auf einer ubunto 20.04 VM.

Wenn ihr ein Production-Setup habt, sollte ja config.dev.py nicht verwendet werden. Versuche es mal mit api/config.py. Die dev-Config wird im Docker Development setup nach dort gemounted, wenn ihr kein Docker nutzt, dann ist die Datei auch nutzlos. Schaut mal in die api/config.py.example, daran könnt ihr eure Production-Config orientieren, die muss dann aber eben in api/config.py liegen.

Der Fehler kommt vermutlich daher, dass ihr, wie im Upgrade Guide beschrieben, in eure Config für das Upgrade nach 0.4 die neuen config Flags hinzufügen müsst:

Add new config flags: VERBOSE, LEAN_MODE, POSTGRES_POOL_SIZE, POSTGRES_MAX_OVERFLOW. Check the example config for sane default values.

Wir haben das leider (noch) nicht so gebaut dass sinnvolle defaults von irgendwo kommen, wenn ihr die nicht setzt. Daher ist die manuelle Änderung in diesen Versionen nötig.

/usr/local/lib/python3.8/dist-packages/sanic/config.py

Das ist nur das sanic-Modul das versucht die Config zu laden, das ist nicht die config-Datei an sich.

Ok, unsere config lag wohl einfach nur im falschen Ordner, jetzt haben wir diesen Fehler nicht mehr, dafür aber einen neuen: RuntimeError: external program failed: alembic upgrade head

Ich poste hier mal die (hoffentlich interesannten) Teile vom Stacktrace:
sqlalchemy.dialects.postgresql.asyncpg.ProgrammingError: <class 'asyncpg.exceptions.DuplicateTableError'>: relation "road" already exists

sqlalchemy.exc.ProgrammingError: (sqlalchemy.dialects.postgresql.asyncpg.ProgrammingError) <class 'asyncpg.exceptions.DuplicateTableError'>: relation "road" already exists
[SQL:
CREATE TABLE road (
        way_id BIGSERIAL NOT NULL,
        zone zone_type,
        name VARCHAR,
        geometry GEOMETRY,
        directionality INTEGER,
        oenway BOOLEAN,
        PRIMARY KEY (way_id)
)

]
(Background on this error at: https://sqlalche.me/e/14/f405)

@thomaso hatte einen ähnlichen Fehler, er hatte sein Portal mit Version 0.5.1 aufgesetzt gehabt. Ich hatte angenommen, dass das Aufsetzen auf 0.5.1 bei ihm den Sonderfall verursacht hat, aber ihr kommt ja schon von 0.4.x oder älter. Er wollte @opatut deswegen ansprechen.

Bei @thomaso war es möglich erstmal 0.5.x weiter laufen zu lassen, und weil es schon spät war hatten wir das dann so gemacht.

Hallo, sorry für die späte Antwort, habe gerade wenig Kapazitäten.

Der Fehler kommt wenn du erst den Import machst (das legt die Tabelle road an) und dann versuchst die entsprechende Migration auszuführen. Das sollte nicht passieren, wenn du diesen Passus in der Upgrade-Anleitung beachtest:

Falls das nicht klappt könnte das hier helfen:

alembic upgrade 920aed1450c9
alembic stamp 35e7f1768f9b
alembic upgrade head

Damit überspringst du die entsprechende Version.

2 „Gefällt mir“

Auf meiner Spielinstanz hatte ich das Problem auch, da habe ich mich dann auf deine Antwort hin die alembic stamps hochgehangelt (wenn die Beschwerde war „table gibts schon“ hab ich die nächste alembic revision manuell gestamped). Am Ende waren alle Tabellen schon da und ich war auf head bis ich „upgrade head“ ohne fehler ausführen konnte.

1 „Gefällt mir“

Ich hab jetzt git checkout f0f804a gemacht, um die Version0.5.1 zu bekommen. Wenn ich dann das alembic upgrade head laufen lasse, bekomme ich einen Fehler sqlalchemy.exc.ProgrammingError: (sqlalchemy.dialects.postgresql.asyncpg.ProgrammingError) <class 'asyncpg.exceptions.DuplicateTableError'>: relation "road_usage" already exists

Wenn ich probiere, alembic upgrade 920aed1450c9 auszuführen, sagt er: FAILED: Can't locate revision identified by '920aed1450c9'

Hallo @zeitungsleser, wenn du magst können wir uns das mal zusammen anschauen. War das lange Wochenende weg, sonst hätte ich früher geantwortet. Schlag einfach einen Abend (außer Samstag) vor, dann können wir uns im OBS Senfcall Raum treffen.

Bei mir geht heute und morgen Abend, wie’s bei dir besser passt. Kannst du mir dann noch einen Link zu dem Senfcall Raum schicken?

Dann lass uns heute um 19:30 treffen? Hier ist der Link zum Raum: https://forum.openbikesensor.org/t/allgemeiner-openbikesensor-videoraum/188/2