2014-01-21 2 views
0

Postgres 9.1 데이터베이스에 inventory라는 테이블을 생성했습니다. psql에서 선택, 삽입 등을 할 수있었습니다.Postgres 테이블이 jdbc가 아닌 psql에 표시됩니다.

그러나 웹app의 서버에서이 테이블에 액세스하려고합니다. Postgres 데이터베이스와 동일한 컴퓨터에 (JDBC를 사용하여) 서버 코드를 설치했습니다. 속성을 만드는 데 사용 사이에 내가 일관되고있어 것을, 나는 동일한 사용자 이름을 사용하고 있는지 확인 만든

org.postgresql.util.PSQLException: ERROR: relation "inventory" does not exist

: 나는 JDBC 코드에서 재고 테이블에 액세스하려고하면이 오류를 얻을 수 연결, psql을 검사하는 사용자, 그리고 런타임시 JDBC 메타 데이터에서 사용자 이름을 가져 오는 것입니다.

이상하게도 내 랩톱 (Tomcat과 webapp 및 postgres 설치 호스팅)에서 비슷한 설정으로 성공했지만 서버에서 db와 webapp를 호스팅 할 때 설치가 작동하지 않습니다 . 그것은 하나의 기계가 아닌 다른 작동하기 때문에

, 나는 가능한 설명은 다음과 생각 :

  1. I은 ​​사용자 구성에 뭔가 문제가있다. 아마도 Postgres 사용자 권한이 서버의 JDBC에서 액세스 할 때 잘못되었습니다 (서버에 Postgres 설치를 설정하지 않은 것 같습니다).
  2. 잘못된 스키마가 나타납니다. 내가 어떻게 알 겠어?
  3. 어떻게 든 잘못된 컴퓨터를 치고 있습니다. 나는 select inet_server_addr();을 시도했지만, 127.0.0.1은 매우 유용하지 않습니다. 확인하는 더 좋은 방법이 있습니까?

다른 대화 ("relation not found" using Postgres within an Eclipse Hibernate application)에서 나는 많은 사람들이 도움을 받아서 psql에서 테이블이 나타나는지 알고 싶어했습니다. 그 문제에 대한 대답은 '아니오'였고 그는 테이블을 만들면되었습니다. 나에게 대답은 '예'이다. 나는 그 표를 볼 수 없다.

데이터베이스에 연결할 수 있지만 내 사용자가 소유하고있는 테이블을 볼 수없는 이유는 무엇입니까? 이것은 몇 가지 가능성 중 하나이어야한다

감사

답변

2

:

  • 당신은 잘못된 서버에 연결하는. 당신은 올바른 서버
  • 귀하의 search_path에 잘못된 데이터베이스에 연결하는
  • 는 두 개의 연결 사이에 당신은 오타
했습니다
  • 두 연결 사이
  • 귀하의 식별자 인용 다릅니다 다르다

    첫 번째 두 가지 경우 PgJDBC를 사용하여 application_name을 연결 한 다음 에서 pg_stat_activity을 쿼리하여 예상되는 서버와 예상대로 연결되어 있는지 확인하십시오.

    search_path의 경우 두 연결에서 SHOW search_path;입니다. 비교. \dt inventorypsql에서 확인하고 테이블이있는 스키마에 유의하고 PgJDBC의 정규화 된 이름으로 액세스 해보십시오. 예 : someschema.inventory.

    인용 용 : "인벤토리"또는 "인벤토리"라는 테이블이있을 수 있습니까? 그렇다면 INVENTORY을 한 위치에, "INVENTORY"을 다른 위치로 참조 할 수 있습니까? Pg는 SQL 표준에 따라 인용되지 않는 한 대소 문자를 구별합니다.

  • +0

    감사합니다. 문제는 비슷한 이름의 데이터베이스가 2 개 있었는데 잘못된 데이터베이스에 연결하는 중이었습니다. pg_stat_activity의 쿼리는 그 것을 명확하게 만들었습니다. – user3221325

    관련 문제