У меня есть PostgreSQL и Solr в контейнере докера, работающем на той же машине. Я пытаюсь сделать dataimport из Postgres в Solr, но я получаю ошибки. Вот соответствующие части журнала:Solr, работающий внутри контейнера докеров, не подключается к базе данных PostgreSQL
Full Import failed:java.lang.RuntimeException: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: SELECT * FROM formulas
org.postgresql.util.PSQLException: Connection to 127.0.0.1:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
В основном установление соединения отказавшиеся/никогда не сделал, но я запутался.
netstat -nltp
дает
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 772/sshd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 1822/postgres
tcp6 0 0 :::22 :::* LISTEN 772/sshd
tcp6 0 0 :::8983 :::* LISTEN 28508/docker-proxy
tcp6 0 0 ::1:5432 :::* LISTEN 1822/postgres
И говорит, что Postgres прослушивает 127.0.0.1
. Кроме того, в моем pg_hba.conf
, я
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 md5
которые я считаю, что правильные настройки позволяют соединения.
Мой solrconfig.xml, который отвечает за настройки импорта данных выглядит следующим образом:
<dataConfig>
<dataSource driver="org.postgresql.Driver"
url="jdbc:postgresql://127.0.0.1:5432/formulagrid"
user="myuser"
password="mypassword"/>
<document>
<entity name="formula" query="SELECT * FROM formulas">
<field column="formula_id" name="id" />
<field column="name" name="name" />
<field column="formula" name="formula" />
</entity>
</document>
</dataConfig>
Я также попробовал адрес jdbc:postgresql://localhost:5432/formulagrid
.
Я не знаю, куда еще идти отсюда.
Вы используете postgresql и solr в одном контейнере? если нет, вы не можете использовать localhost для подключения от одного к другому. – Michael
@ Майкл, это верно. Solr находится в контейнере, и Postgres только что установлен на самой машине. Если я не могу использовать localhost, что я могу использовать? – m0meni