You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***

#1 2015-11-16 17:50:36

Wullimann
Member
From: Lüneburger Heide
Registered: 2008-05-25
Posts: 7

FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint

Liebe OSMmer,

ich betreibe einen lokalen OSM Server. Ich möchte via `osmosis` einen Kartenausschnitt importieren. Folgende Schritte werden ausgeführt:

Ausscheiden der Karte aus dem aktuellen Deutschland-Kartenmaterial (geofabrik Stand 16.11.2015)

    osmosis --rx enableDateParsing=no file=germany-latest.osm.bz2 --bb left=10.72 right=11.51 top=53.28 bottom=52.81 completeWays=yes completeRelations=yes --wx luechow.osm.bz2

Leeren der Datenbank:

    osmosis --truncate-apidb  host="127.0.0.1" database="osm"  user="123" password="123"  validateSchemaVersion="no"

Einspielen der Daten:

    osmosis --read-xml luechow.osm.bz2 --write-apidb host="127.0.0.1" database="osm"  user="123" password="123" validateSchemaVersion="no"

Der Datenimport bricht allerdings mit der folgenden Meldung ab:

Nov 16, 2015 5:30:40 PM org.openstreetmap.osmosis.core.pipeline.common.ActiveTaskManager waitForCompletion
SCHWERWIEGEND: Thread for task 1-read-xml failed
org.openstreetmap.osmosis.core.OsmosisRuntimeException: Unable to load current nodes.
    at org.openstreetmap.osmosis.apidb.v0_6.ApidbWriter.populateCurrentNodes(ApidbWriter.java:928)
    at org.openstreetmap.osmosis.apidb.v0_6.ApidbWriter.populateCurrentTables(ApidbWriter.java:1029)
    at org.openstreetmap.osmosis.apidb.v0_6.ApidbWriter.complete(ApidbWriter.java:1055)
    at org.openstreetmap.osmosis.xml.v0_6.XmlReader.run(XmlReader.java:110)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.postgresql.util.PSQLException: FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint „current_nodes_pkey1“
  Detail: Schlüssel „(id)=(100)“ existiert bereits.
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2157)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1886)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:410)
    at org.openstreetmap.osmosis.apidb.v0_6.ApidbWriter.populateCurrentNodes(ApidbWriter.java:925)
    ... 4 more

Ich habe das extrahieren des Ausschnitts ja bereits mit der Option `completeRelations=yes` gemacht, damit es nicht zum Durchtrennen von Wegen kommt, die dann ungünstiger Weise zwei mal im Datenbestand vorhanden sein können. Kann mir jemand helfen, das Problem zu lösen?

Danke!

Offline

#2 2015-11-16 18:37:38

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,769
Website

Re: FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint

Wullimann wrote:

Kann mir jemand helfen, das Problem zu lösen?

Nö, das musst du schon selber machen
...
...
...
indem du keine API-DB aufsetzt sondern eine "normale" DB. Die Api-DB ist dafür da, per OSM-Api "gefüttert" zu werden und nicht geeignet, per OSMOSIS modifiziert zu werden. Zudem ist die zu nichts nütze ausser die Exporte für die "normalen" DBs zu erstellen..

Abhänging von dem, was du damit machen willst, entweder

https://wiki.openstreetmap.org/wiki/Osm … _Schema.29
https://wiki.openstreetmap.org/wiki/Osm … _Schema.29

oder aber mit osm2pgsql https://wiki.openstreetmap.org/wiki/Osm2pgsql um eine zum Rendern per Mapnik geeignete DB aufzusetzen.

90% oder mehr der lokalen Datenbanken sind vom osm2pgsql-Typ, die beiden Osmosis-Versionen sind sehr selten und eine API-DB ist extrem selten.

Gruss
walter

Last edited by wambacher (2015-11-16 18:38:37)

Offline

#3 2015-11-17 10:42:38

GeorgFausB
Member
From: Probstei, Schleswig-Holstein
Registered: 2008-10-14
Posts: 1,916

Re: FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint

Moin Walter,

ich bewundere Deine Kompetenz in Sachen Datenbank und freue mich immer wieder über Deine allgemeine Hilfsbereitschaft -
aber wäre es nicht sinnvoller, erst einmal

wambacher wrote:

Abhänging von dem, was du damit machen willst

zu klären, ob er vielleicht eine Api-DB z. B. zum zukünftigen Auswerten der Historie benötigt,

bevor man ihm

wambacher wrote:

indem du keine API-DB aufsetzt sondern eine "normale" DB.

vor den Latz knallt?

Aktuelle Fragestellung ist doch, warum tauchen beim Schreiben in eine leere API-DB doppelte ID auf?
D. h. es geht hier doch um die Vorbereitung der Eingangsdaten.

Die Empfehlung, ob er je nach gewünschter Aufgabenstellung mit einem anderen Schema nicht glücklicher wird, sollte m. E. erst erfolgen, wenn seine Aufgabenstellung klarer ist.

Gruß
Georg

Offline

#4 2015-11-17 11:48:18

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,769
Website

Re: FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint

GeorgFausB wrote:

Aktuelle Fragestellung ist doch, warum tauchen beim Schreiben in eine leere API-DB doppelte ID auf?
D. h. es geht hier doch um die Vorbereitung der Eingangsdaten.

Die Empfehlung, ob er je nach gewünschter Aufgabenstellung mit einem anderen Schema nicht glücklicher wird, sollte m. E. erst erfolgen, wenn seine Aufgabenstellung klarer ist.

Hi Georg,

Ich bin mir ziemlich sicher, dass das mit dem API-Schema nicht der richtige Weg ist, habe aber meine Schlussfolgerungen wohl etwas zu konkret formuliert.

Warten wir mal ab.

Gruss
walter

Last edited by wambacher (2015-11-17 11:48:37)

Offline

#5 2015-11-17 14:13:07

woodpeck
Member
Registered: 2009-12-02
Posts: 1,210

Re: FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint

Ich kann bestätigen, dass dieser Fehler tatsächlich auftritt (habe es selber nachgestellt), obwohl im Eingabefile definitiv nur einmal ein Node mit der id=100 auftaucht. Woran es liegt - keine Ahnung.

(Anmerkung - ich würde mit --read-pbf und --write-pbf arbeiten statt mit XML-Dateien. Ausserdem, wie Wambacher sagt - vorher sicher sein, dass APIDB wirklich das ist, was man will.)

Bye
Frederik

Offline

#6 2015-11-17 21:13:25

Wullimann
Member
From: Lüneburger Heide
Registered: 2008-05-25
Posts: 7

Re: FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint

Hallo Zusammen!

Ich habe eine Instanz der OSM-Website laufen. Das Datenbank-Schema wird durch die Rails-Migration bestimmt. Insofern gibt es da keine Alternativen. Mir ist bisher kein besserer Weg für die Erstbestückung der Datenbank mit osmosis über die api-db in den Sinn gekommen. Außerdem hatte ich bisher gar keine Probleme, zumal es nicht das erste Mal ist, daß ich eine lokale Datenbank über diesen Weg bestückt habe.

*ratlos*

Offline

#7 2015-11-17 21:54:02

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,769
Website

Re: FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint

Wullimann wrote:

Hallo Zusammen!

Ich habe eine Instanz der OSM-Website laufen.

Hätte ich jetzt nicht gedacht. Nun denn, das ist ja das Allerfeinste vom Feinen. wink

Das Datenbank-Schema wird durch die Rails-Migration bestimmt. Insofern gibt es da keine Alternativen. Mir ist bisher kein besserer Weg für die Erstbestückung der Datenbank mit osmosis über die api-db in den Sinn gekommen. Außerdem hatte ich bisher gar keine Probleme, zumal es nicht das erste Mal ist, daß ich eine lokale Datenbank über diesen Weg bestückt habe.

*ratlos*

Nicht nur du - allerdings muss ich mangels Erfahrung mit der api-db aussteigen. Frederik hat ja auch einige Probleme der selben Art entdeckt. Da er, bzw seine Firma GeoFabrik, diese Exporte ja zur Verfügung stellen, sehe ich das Ganze in guten Händen.

Als nächstes würde ich einfach mal einen anderen Extrakt (irgend was Kleines wie Bremen, Berlin oder Saarland) nehmen und das nochmals kurz anlaufen lassen, ohne auch nur ein Bit an den Daten zu ändern. Und natürlich PBF, wie Frederik vorgeschlagen hatte.

Gruss
walter

Last edited by wambacher (2015-11-17 21:56:09)

Offline

#8 2015-11-17 21:59:08

mmd
Member
Registered: 2010-11-06
Posts: 2,150

Re: FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint

Hallo,

100 ist zufällig auch die Paketgröße beim API DB-Writer in osmosis: Link. Des weiteren gibt es dort einen Patch für ein One-Off-Problem: Link. Ist dieser Patch bei euch drin?

Spaßeshalber würde ich den Wert mal hoch oder runtersetzen, neu kompilieren und dann nochmal testen. Wird dann ein anderer Knoten angemeckert, ist ziemlich klar, dass die Paketverarbeitung kaputt ist.

Ansonsten auch ratlos.

Gruß,
mmd

Last edited by mmd (2015-11-17 22:03:07)

Offline

#9 2015-11-17 22:20:27

Wullimann
Member
From: Lüneburger Heide
Registered: 2008-05-25
Posts: 7

Re: FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint

So, Problem hat sich erledigt...

Ich hatte ursprünglich das im Debian-Repository ausgelieferte osmosis mit der Version 0.40.1 verwendet. Nun habe ich die letzte stable 0.44.1 verwendet: siehe da, es hat geklappt! Der Hinweis von mmd hat mich drauf gebracht, mal die Version zu kontrollieren. Danke an mmd, aber auch an alle anderen!

Gruß,
MM

Offline

#10 2015-11-17 23:24:03

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,769
Website

Re: FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint

Wullimann wrote:

So, Problem hat sich erledigt...

Ich hatte ursprünglich das im Debian-Repository ausgelieferte osmosis mit der Version 0.40.1 verwendet. Nun habe ich die letzte stable 0.44.1 verwendet: siehe da, es hat geklappt! Der Hinweis von mmd hat mich drauf gebracht, mal die Version zu kontrollieren. Danke an mmd, aber auch an alle anderen!

Puh, das war aber heftig.
Gratuliere.

Gruss
walter

Offline

Board footer

Powered by FluxBB