Postgresql 错误:安装OSM API时,函数make_standard_name(未知)不存在

Postgresql 错误:安装OSM API时,函数make_standard_name(未知)不存在,postgresql,centos,openstreetmap,nominatim,Postgresql,Centos,Openstreetmap,Nominatim,我正在我自己的服务器上安装Nagnitm,使用 但我在向pgsql数据库添加国家/地区短语/代码时遇到了问题。 我使用上面链接中给出的以下命令执行此操作: psql -d nominatim -f specialphrases_countries.sql 但是,我得到了以下错误: psql:specialphrases_countries.sql:1: ERROR: function make_standard_name(unknown) does not exist LINE 1: sel

我正在我自己的服务器上安装Nagnitm,使用

但我在向pgsql数据库添加国家/地区短语/代码时遇到了问题。 我使用上面链接中给出的以下命令执行此操作:

psql -d nominatim -f specialphrases_countries.sql
但是,我得到了以下错误:

psql:specialphrases_countries.sql:1: ERROR:  function make_standard_name(unknown) does not exist
LINE 1: select getorcreate_country(make_standard_name('uk'), 'gb');
                                   ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
psql:specialphrases_countries.sql:2: ERROR:  function make_standard_name(unknown) does not exist
LINE 1: select getorcreate_country(make_standard_name('united states...
                                   ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
psql:specialphrases_countries.sql:3: ERROR:  relation "country_name" does not exist
LINE 1: ...e_standard_name(country_code), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:4: ERROR:  relation "country_name" does not exist
LINE 1: ...try_name.name,ARRAY['name'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:5: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:af'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:6: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:ar'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:7: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:br'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:8: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:ca'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:9: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:cs'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:10: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:de'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:11: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:en'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:12: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:es'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:13: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:et'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:14: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:eu'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:15: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:fa'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:16: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:fi'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:17: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:fr'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:18: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:gl'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:19: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:hr'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:20: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:hu'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:21: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:ia'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:22: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:is'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:23: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:it'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:24: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:ja'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:25: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:mk'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:26: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:nl'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:27: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:no'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:28: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:pl'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:29: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:ps'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:30: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:pt'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:31: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:ru'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:32: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:sk'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:33: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:sv'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:34: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:uk'])), country_code) from country_na...
                                                             ^
psql:specialphrases_countries.sql:35: ERROR:  relation "country_name" does not exist
LINE 1: ..._name.name,ARRAY['name:vi'])), country_code) from country_na...
                                                             ^
我不知道什么是“make_standard_name(未知)”,如何创建它来解决“错误:函数make_standard_name(未知)不存在”


请提出建议。

我想说,这实际上不是你遇到的第一个错误。尝试重新运行创建并将输出发送到文件。查找第一个错误。一种方法是在发生错误后告诉psql中止,在unix/linux上是:

ON_ERROR_STOP=1 psql -d nominatim -f specialphrases_countries.sql
在Windows上,我认为它是:

set ON_ERROR_STOP=1
psql -d nominatim -f specialphrases_countries.sql
但是,由于您已经部分加载了数据,这可能无法正常工作,因为它可能试图创建已经存在的内容。您可能需要运行包提供的任何clean/remove脚本,或者(如果可能)在新的clean数据库上运行它

对于测试,请尝试创建一个新的空白数据库,并尝试使用以下内容加载数据:

ON_ERROR_STOP=1 psql -d mytestdb -1 -f specialphrases_countries.sql

注意那里的
-1
,它告诉psql在单个事务中运行作业。无论如何,这通常是一个好主意,因为它可以确保创建/加载脚本始终作为一个整体成功或失败。

函数make_standard_name(text)通过安装过程中的后续步骤添加到数据库中:

如果此函数缺失,则该步骤缺失或在该步骤中发生错误。您需要先成功运行它,然后才能导入额外的国家/地区名称数据


您可以尝试
/util/setup.php--create functions
来生成函数(而不是
/util/setup.php--all
),但是如果出现错误,您的数据库几乎肯定无效,如果继续,您将遇到其他问题。

我创建了新的数据库,并按照您所说的做了,现在出现以下错误:psql:/home/namit/public\u html/namitm/specialphrases\u countries.sql:2:错误:当前事务被中止,在事务块结束前忽略命令请帮助我解决。谢谢。同样,这是在最初的错误之后。查找第一个错误。尝试将psql的输出定向到一个文件,然后打开它以检查输出,例如
psql-d mytestdb-1-f specialphrases\u countries.sql>&psql.log
然后打开
psql.log