渗透抛出奇怪的 Java 错误

Osmosis throws strange Java error

一段时间以来,我一直在尝试将北美-latest.osm.pbf(来自 Geofabrik)导入 Postgres 数据库。在彻底查看 wiki 详细用法页面后,我通过包含的 sql 脚本将数据库设置为包含所有必要的表 (pgSnapshot)。我还通过 运行 通过一个较小的文件 (Antarctica) 确保渗透作用按预期运行,并且我得到了预期的结果。但是,当我尝试对北美文件执行相同的过程时,我收到一个与网络上报告的其他错误不同的错误。我正在尝试将这些数据放到服务器上,上传到我的本地似乎没问题。

这是我的代码(通过命令提示符):

C:\Users\eddie\Desktop>osmosis --read-pbf-fast north-america-latest.osm.pbf --log-progress interval=3000 --write-pgsql nodeLocationStoreType="TempFile" host=1*.8*.*.*0* database=osm postgresSchema=osm_updates user=eddie password=***

这是我收到的错误消息:

SEVERE: Thread for task 1-read-pbf-fast failed
org.springframework.dao.EmptyResultDataAccessException: Incorrect result 
size: expected 1, actual 0
at org.springframework.dao.support.DataAccessUtils.requiredSingleResult(DataAccessUtils.java:71)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:495)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:500)
at org.openstreetmap.osmosis.pgsnapshot.common.SchemaVersionValidator.validateDBVersion(SchemaVersionValidator.java:64)
at org.openstreetmap.osmosis.pgsnapshot.common.SchemaVersionValidator.validateVersion(SchemaVersionValidator.java:47)
at org.openstreetmap.osmosis.pgsnapshot.v0_6.impl.CopyFilesetLoader.run(CopyFilesetLoader.java:77)
at org.openstreetmap.osmosis.pgsnapshot.v0_6.PostgreSqlCopyWriter.complete(PostgreSqlCopyWriter.java:117)
at org.openstreetmap.osmosis.core.progress.v0_6.EntityProgressLogger.complete(EntityProgressLogger.java:82)
at org.openstreetmap.osmosis.pbf2.v0_6.PbfReader.run(PbfReader.java:96)
at java.lang.Thread.run(Unknown Source)

Jul 19, 2018 8:28:24 AM org.openstreetmap.osmosis.core.Osmosis main 
SEVERE: Execution aborted.
org.openstreetmap.osmosis.core.OsmosisRuntimeException: One or more tasks failed.
at org.openstreetmap.osmosis.core.pipeline.common.Pipeline.waitForCompletion(Pipeline.java:146)
at org.openstreetmap.osmosis.core.Osmosis.run(Osmosis.java:92)
at org.openstreetmap.osmosis.core.Osmosis.main(Osmosis.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:330)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:238)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
at org.codehaus.classworlds.Launcher.main(Launcher.java:47)

我 运行ning osmosis .46,Postgres/PostGis 10/2.4 on Windows 10 with 12GB RAM and 2 Intel 2.4GHz processors.

更新:即使我 运行 较小的文件,现在也会出现错误。此外,从进度记录器消息中可以看出,渗透的行为就好像它正在处理一个更大的文件(到达南极洲的节点 4614331685)。将加拿大的 OSM 数据上传到我的本地没有任何问题,因此问题可能与我尝试连接的服务器有关。如果有人对如何破译错误消息有任何线索,我想听听他们的意见!

我采纳了@mmd 的关闭模式验证的建议,让渗透得以发挥作用。尽管我 运行 pgsnapshot 脚本并且之前已经成功地将数据放在那里,但在北美做一些事情似乎把它扔掉了。我将在后续数据库更新后更新此答案。