при развертывании приложения django на героку postgres не работает

Я пытаюсь развернуть свое приложение django на сервере heroku, я следовал инструкциям с этого веб-сайта https://devcenter.heroku.com/articles/getting-started-with-python#introduction. Он работал нормально до команды "heroku open". Когда я дошел до той части, где мне нужно разместить мою базу данных с помощью команды «heroku run python manage.py syncdb», она не показала сообщение «OperationalError: не удалось подключиться к серверу: в соединении отказано». Сервер работает на хосте «localhost» (127.0.0.1) и принимает TCP/IP соединения на порт 5432?". Я перепробовал множество исправлений, включая предложенное здесь Развертывание локальной базы данных postgres приложения Django. на героку? и http://www.cyberciti.biz/tips/postgres-allow-remote-access-tcp-connection.html. Я пробовал все решения, включая редактирование «listen_address» = '*' и tcpip_socket='true' в postgresql. conf и отредактируйте значения ipv4 и v6 в pg_hba.conf, чтобы host all all 127.0.0.1 255.255.0.1 trust host all all 10.0.0.99/32 md5 host all all 0.0.0.0/0 .

Но ни один из них не сработал. Я предполагаю, что проблема возникает из-за того, что heroku не может подключиться к моему локальному серверу postgres. Это странно, потому что я могу получить доступ к серверу postgres через pgadmin.

А также в django settings.py выглядит вот так

БАЗЫ ДАННЫХ = { 'по умолчанию': { 'ДВИГАТЕЛЬ': 'django.db.backends.postgresql_psycopg2', 'ИМЯ': 'django_test', 'ПОЛЬЗОВАТЕЛЬ': 'postgres', 'ПАРОЛЬ': '******' , 'HOST': 'localhost', # Или IP-адрес, на котором размещена ваша БД, 'PORT': '5432', } } Нужно ли мне изменить это и вместо этого использовать настройки базы данных heroku??


person tapas kumar Mahanta    schedule 25.09.2015    source источник
comment
Итак, сервер postgres находится на сервере heroku, верно?   -  person Jared Mackey    schedule 25.09.2015
comment
нет в моей локальной системе   -  person tapas kumar Mahanta    schedule 25.09.2015
comment
но если я дам URL-адрес сервера postgres db, который я создал на героку (который начинается с postgres//xxxxxxxxxxxxxx, он говорит, что не может перевести адрес   -  person tapas kumar Mahanta    schedule 25.09.2015


Ответы (1)


localhost на сервере указывает на сервер, а не на вашу локальную машину. Причина в том, что сервер, на котором выполняется ваш код django, попытается разрешить имя DNS localhost, и у него есть указатель на 127.0.0.1, который является локальным для сервера, разрешающего это имя. Это НЕ будет указывать на ваш компьютер, на котором вы работаете.

Вам нужно получить экземпляр postgres на героку и изменить HOST: 'xxx.xxx.xxx.xxx на IP-адрес вашего нового экземпляра postgres в настройках django.

person Jared Mackey    schedule 25.09.2015
comment
если конфигурация в моей системе показывает это eth0 Link encap:Ethernet HWaddr fc:aa:14:5f:7b:84 inet addr:192.168.0.101 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::feaa:14ff: fe5f:7b84/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Метрика:1 Пакеты RX:332469 ошибки:0 отброшено:2 переполнение:0 кадр:0 пакеты TX:287358 ошибки:0 отброшено:0 переполнение:0 оператор:0 столкновения: 0 txqueuelen: 1000, которые, я думаю, не содержат мой IP-адрес - person tapas kumar Mahanta; 25.09.2015
comment
Нет, это не так. Будет проще просто запустить экземпляр postgres на heroku или добавить postgres на ваш текущий сервер heroku. - person Jared Mackey; 25.09.2015
comment
VOILA, это сработало, спасибо, чувак, я использовал URL-адрес postgres вместо хоста ... большое спасибо - person tapas kumar Mahanta; 25.09.2015