나는 내 custom library를 호출하는 몇 가지 plperl 함수와 함께 postgresql 9.0을 사용하는 웹 응용 프로그램을 가지고있다. 다만 발표 것처럼 나는 신선한 시작할 때, 내 개발 지역 내 빌드 프로세스는 기본적으로이 수행합니다 생산에서"service postgres status"가 OK를 반환하더라도 pgsql이 시작 후 처음 몇 초 동안 수신 대기하지 않는 이유는 무엇입니까?
- 덤프 데이터 및 역할
- 방울 데이터 및 역할을 dev에
- 생산 데이터를 복원 및 디바이스 상에 역할이 내 사용자 지정 라이브러리의 캐시 된 버전이 붉어 새로 변경된 사람이 뽑힐 것이다되도록
- 다시 시작의 PostgreSQL은이
- 내 dev에 델타 적용
- 진공
내 응용 프로그램의 스택을 win32에서 CentOS로 전환 한 이후로 가끔씩 (즉,이 빌드 프로세스를 "잠시"실행하지 않은 경우에만 - 아마도 적어도 하루 만에)
psql: could not connect to server: No such file or directory
Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
구체적으로 어떤 쉘 수준에서 실행하지 못하는 것 것은 이것이다 : 바로이 오류를보고 난 후에
psql --host=$host -U $superuser -p $port -d $db -f "$delta_filename.sql"
, 만약 내가, 내 빌드 스크립트가 델타를 적용 할 때) 오류가 발생합니다 psql을 사용하여 dev 데이터베이스에 연결을 시도하십시오. 이자형. 또한 빌드 스크립트를 다시 실행하면이 문제가 발생할 때마다 두 번째로 잘 작동합니다. 허용되는 해결 방법이지만 근본적인 원인에 대해 우려 할 사항이 있습니까?
지금까지 디버깅을 시도한 결과, 서버 재시동 직후에 단계를 삽입했는데 (즉, 확인 종료, OK 시작보고) 그 결과로 루프에서 service postgresql-dev status
의 결과를 확인하고 시도하는 데 2 초 동안 기다렸다가 실패합니다. 내 최신 빌드 스크립트를 실행하면 루프는 첫 번째 시도에서 성공합니다 - status
반환 "실행 중"-하지만 델타 적용은 여전히 위의 연결 오류와 함께 실패합니다. 두 번째 시도는 성공하고, 실패한 직후에 스크립트 외부에서 psql을 통해 연결합니다.
내 다음 번 디버그 시도가 처음으로 status
에 들어가기 전에 5 초 동안 잠자기를 기다렸다가 어떻게되는지 확인했습니다. 지금까지이 문제를 해결하는 것으로 보인다.
그래서 "최근에"다시 시작하지 않은 한, [OK]
을 시작한 후 pgsql은 소켓에서 수신 대기하지 않고 상태가 running ok
이고 최대 5 초 동안 대기하고 있습니다.
실제로 shared_preload_libraries를 사용하여 라이브러리를로드하고 있습니다. :-) 좋은 지적이지만 루프에서 나는 단지 성공할 때까지 간단한 psql을 넣고 그것을 통해 전체 델타 파일을 실행해야한다고 생각합니다.감사! – Kev