2018-08-24 00:12:10 +03:00
# Troubleshooting Nominatim Installations
2017-05-25 00:29:08 +03:00
2018-08-24 00:12:10 +03:00
## Installation Issues
2017-05-25 00:29:08 +03:00
2018-07-13 19:43:51 +03:00
### Can a stopped/killed import process be resumed?
"I accidentally killed the import process after it has been running for many hours. Can it be resumed?"
2017-05-25 00:29:08 +03:00
It is possible if the import already got to the indexing stage.
Check the last line of output that was logged before the process
was killed. If it looks like this:
2018-01-15 01:43:15 +03:00
Done 844 in 13 @ 64.923080 per second - Rank 26 ETA (seconds): 7.886255
2017-05-25 00:29:08 +03:00
then you can resume with the following command:
2018-01-15 01:43:15 +03:00
```sh
2021-01-14 14:04:08 +03:00
nominatim import --continue indexing
2018-01-15 01:43:15 +03:00
```
2017-05-25 00:29:08 +03:00
2018-01-11 01:21:21 +03:00
If the reported rank is 26 or higher, you can also safely add `--index-noanalyse` .
2017-05-25 00:29:08 +03:00
2020-06-15 19:36:21 +03:00
### PostgreSQL crashed "invalid page in block"
Usually serious problem, can be a hardware issue, not all data written to disc
for example. Check PostgreSQL log file and search PostgreSQL issues/mailing
list for hints.
If it happened during index creation you can try rerunning the step with
```sh
2021-01-14 14:04:08 +03:00
nominatim import --continue indexing
2020-06-15 19:36:21 +03:00
```
Otherwise it's best to start the full setup from the beginning.
2018-07-13 19:43:51 +03:00
### PHP "open_basedir restriction in effect" warnings
2019-05-21 14:55:16 +03:00
PHP Warning: file_get_contents(): open_basedir restriction in effect.
2017-05-25 00:29:08 +03:00
2019-11-11 18:54:12 +03:00
You need to adjust the
[open_basedir ](https://www.php.net/manual/en/ini.core.php#ini.open-basedir )
setting in your PHP configuration (`php.ini` file). By default this setting may
look like this:
2017-05-25 00:29:08 +03:00
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/
2019-11-11 18:54:12 +03:00
Either add reported directories to the list or disable this setting temporarily
by adding ";" at the beginning of the line. Don't forget to enable this setting
again once you are done with the PHP command line operations.
2017-05-25 00:29:08 +03:00
2020-06-20 05:01:50 +03:00
### PHP timezeone warnings
2018-07-13 19:43:51 +03:00
The Apache log may contain lots of PHP warnings like this:
2017-05-25 00:29:08 +03:00
`PHP Warning: date_default_timezone_set() function.`
You should set the default time zone as instructed in the warning in
your `php.ini` file. Find the entry about timezone and set it to
something like this:
2019-05-21 14:55:16 +03:00
2017-05-25 00:29:08 +03:00
; Defines the default timezone used by the date functions
2019-05-21 14:55:16 +03:00
; https://php.net/date.timezone
2017-05-25 00:29:08 +03:00
date.timezone = 'America/Denver'
Or
2018-01-15 01:43:15 +03:00
```
echo "date.timezone = 'America/Denver'" > /etc/php.d/timezone.ini
```
2017-05-25 00:29:08 +03:00
2018-07-13 19:43:51 +03:00
### nominatim.so version mismatch
When running the import you may get a version mismatch:
`COPY_END for place failed: ERROR: incompatible library "/srv/Nominatim/nominatim/build/module/nominatim.so": version mismatch`
2017-05-25 00:29:08 +03:00
pg_config seems to use bad includes sometimes when multiple versions
of PostgreSQL are available in the system. Make sure you remove the
2018-07-13 19:43:51 +03:00
server development libraries (`postgresql-server-dev-9.5` on Ubuntu)
2017-05-25 00:29:08 +03:00
and recompile (`cmake .. & & make`).
2019-12-28 23:21:39 +03:00
### I see the error "ERROR: permission denied for language c"
2019-05-14 20:45:56 +03:00
`nominatim.so` , written in C, is required to be installed on the database
server. Some managed database (cloud) services like Amazon RDS do not allow
this. There is currently no work-around other than installing a database
on a non-managed machine.
2018-07-13 19:43:51 +03:00
### I see the error: "function transliteration(text) does not exist"
2017-05-25 00:29:08 +03:00
2021-01-14 14:04:08 +03:00
Reinstall the nominatim functions with `nominatim refresh --functions`
2017-05-25 00:29:08 +03:00
and check for any errors, e.g. a missing `nominatim.so` file.
2018-11-17 17:37:46 +03:00
### I see the error: "ERROR: mmap (remap) failed"
This may be a simple out-of-memory error. Try reducing the memory used
for `--osm2pgsql-cache` . Also make sure that overcommitting memory is
allowed: `cat /proc/sys/vm/overcommit_memory` should print 0 or 1.
If you are using a flatnode file, then it may also be that the underlying
filesystem does not fully support 'mmap'. A notable candidate is virtualbox's
vboxfs.
2017-05-25 00:29:08 +03:00
2019-12-28 23:21:39 +03:00
### I see the error: "clang: Command not found" on CentOS
On CentOS 7 users reported `/opt/rh/llvm-toolset-7/root/usr/bin/clang: Command not found` .
Double-check clang is installed. Instead of `make` try running `make CLANG=true` .
2019-03-19 03:52:35 +03:00
### nominatim UPDATE failed: ERROR: buffer 179261 is not owned by resource owner Portal
2021-01-14 14:04:08 +03:00
Several users [reported this ](https://github.com/openstreetmap/Nominatim/issues/1168 )
during the initial import of the database. It's
2019-05-21 14:55:16 +03:00
something PostgreSQL internal Nominatim doesn't control. And PostgreSQL forums
2019-03-19 03:52:35 +03:00
suggest it's threading related but definitely some kind of crash of a process.
Users reported either rebooting the server, different hardware or just trying
2019-05-21 14:55:16 +03:00
the import again worked.
2019-03-19 03:52:35 +03:00
2018-07-13 19:43:51 +03:00
### The website shows: "Could not get word tokens"
2017-05-25 00:29:08 +03:00
The server cannot access your database. Add `&debug=1` to your URL
to get the full error message.
2018-07-13 19:43:51 +03:00
### On CentOS the website shows "Could not connect to server"
`could not connect to server: No such file or directory`
2017-05-25 00:29:08 +03:00
2019-11-11 18:54:12 +03:00
On CentOS v7 the PostgreSQL server is started with `systemd` . Check if
`/usr/lib/systemd/system/httpd.service` contains a line `PrivateTmp=true` . If
so then Apache cannot see the `/tmp/.s.PGSQL.5432` file. It's a good security
feature, so use the
2021-10-18 17:53:24 +03:00
[preferred solution ](../appendix/Install-on-Centos-7.md#adding-selinux-security-settings ).
2017-05-25 00:29:08 +03:00
However, you can solve this the quick and dirty way by commenting out that line and then run
sudo systemctl daemon-reload
sudo systemctl restart httpd
2018-07-13 19:43:51 +03:00
### Website reports "DB Error: insufficient permissions"
2019-11-11 18:54:12 +03:00
The user the webserver, e.g. Apache, runs under needs to have access to the
Nominatim database. You can find the user like
[this ](https://serverfault.com/questions/125865/finding-out-what-user-apache-is-running-as ),
for default Ubuntu operating system for example it's `www-data` .
2018-07-13 19:43:51 +03:00
1. Repeat the `createuser` step of the installation instructions.
2. Give the user permission to existing tables
```
GRANT usage ON SCHEMA public TO "www-data";
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "www-data";
```
### Website reports "Could not load library "nominatim.so"
Example error message
```
SELECT make_standard_name('3039 E MEADOWLARK LN') [nativecode=ERROR: could not
load library "/srv/nominatim/Nominatim-3.1.0/build/module/nominatim.so":
/srv/nominatim/Nominatim-3.1.0/build/module/nominatim.so: cannot open shared
object file: Permission denied
CONTEXT: PL/pgSQL function make_standard_name(text) line 5 at assignment]
```
2019-05-21 14:55:16 +03:00
The PostgreSQL database, i.e. user `postgres` , needs to have access to that file.
2018-07-13 19:43:51 +03:00
2020-06-20 05:01:50 +03:00
The permission need to be read & executable by everybody, but not writeable
by everybody, e.g.
2018-07-13 19:43:51 +03:00
```
-rwxr-xr-x 1 nominatim nominatim 297984 build/module/nominatim.so
```
Try `chmod a+r nominatim.so; chmod a+x nominatim.so` .
2018-08-24 00:12:10 +03:00
When running SELinux, make sure that the
2021-10-18 17:53:24 +03:00
[context is set up correctly ](../appendix/Install-on-Centos-7.md#adding-selinux-security-settings ).
2018-08-24 00:12:10 +03:00
2020-06-20 05:01:50 +03:00
When you recently updated your operating system, updated PostgreSQL to
a new version or moved files (e.g. the build directory) you should
recreate `nominatim.so` . Try
```
cd build
rm -r module/
cmake $main_Nominatim_path & & make
```
2018-07-13 19:43:51 +03:00
### Setup.php fails with "DB Error: extension not found"
2017-05-25 00:29:08 +03:00
2019-05-21 14:55:16 +03:00
Make sure you have the PostgreSQL extensions "hstore" and "postgis" installed.
2019-11-11 18:54:12 +03:00
See the installation instructions for a full list of required packages.
2017-05-25 00:29:08 +03:00
2018-01-15 01:43:15 +03:00
### I forgot to delete the flatnodes file before starting an import.
2017-05-25 00:29:08 +03:00
That's fine. For each import the flatnodes file get overwritten.
2021-01-14 14:04:08 +03:00
See [https://help.openstreetmap.org/questions/52419/nominatim-flatnode-storage ](https://help.openstreetmap.org/questions/52419/nominatim-flatnode-storage )
2017-05-25 00:29:08 +03:00
for more information.
2018-07-13 19:43:51 +03:00
2018-08-24 00:12:10 +03:00
## Running your own instance
### Can I import negative OSM ids into Nominatim?
See [this question of Stackoverflow ](https://help.openstreetmap.org/questions/64662/nominatim-flatnode-with-negative-id ).