2011-04-23 4 views
1

netbeans를 postgresql 데이터베이스에 연결하려고합니다. 연결시 오류나 예외가 발생하지 않기 때문에 연결이 작동 한 것처럼 보입니다. getCatalog()와 같은 메서드도 올바른 대답을 반환합니다.Java SQL "ERROR : Relation"Table_Name "존재하지 않습니다."

그러나 단순한 SQL 문을 실행하려고하면 "오류 : 관계"TABLE_NAME "존재하지 않습니다"라는 오류가 발생합니다. 여기서 TABLE_NAME은 데이터베이스에 존재하는 테이블 중 하나입니다.

Statement stmt = con.createStatement(); 

    ResultSet rs; 

    String query = "SELECT * FROM clients"; 

    rs = stmt.executeQuery(query); 

나는 그것이 (공개) 기본 스키마에보고하지 있기 때문에 넷빈즈가 테이블을 찾는되지 않을 수 있다는 생각, 자바에서 스키마를 설정하는 방법이 : 여기 내 코드는?

EDIT : 내 연결 코드. 데이터베이스 이름은 Cinemax입니다. 명령문 코드를 생략하면 오류가 발생하지 않습니다.

String url = "jdbc:postgresql://localhost:5432/Cinemax"; 
    try{ 

    try { 
     Class.forName("org.postgresql.Driver"); 
    } catch (ClassNotFoundException cnfe) { 
     System.err.println("Couldn't find driver class:"); 
     cnfe.printStackTrace(); 
    } 

    Connection con = DriverManager.getConnection(url,"postgres","desertrose147"); 
+1

SQL을 다시 작성할 수 없습니까? 'SELECT * FROM .clients' – CoolBeans

+0

데이터베이스 서버에 연결하는 방법을 표시하지 않습니다. 나는 @CoolBeans가 정확하거나 매우 가깝다고 생각합니다. 테이블이 다른 스키마 (위의 경우 수정 됨) 또는 연결시 지정한 데이터베이스와 다른 데이터베이스에 있습니다. –

+0

나는 그것을 사랑합니다 ... 당신은 우리에게 당신이 가지고있는 진정한 오류를 보여줄 수 있습니까? 나는 당신이 "select * from clients"를 실행할 때 데이터베이스가 "TABLE_NAME 관계"라고 말하지 않는다고 생각한다. –

답변

7

예를 들어를 사용하여 큰 따옴표를 사용하여 표를 만든 것으로 의심됩니다. "Clients" 또는 다른 대/소문자 조합이 있으므로 테이블 이름은 대소 문자를 구분합니다.

문을

SELECT table_schema, table_name 
FROM information_schema.tables 
WHERE lower(table_name) = 'clients' 

수익을 무엇?

반환되는 테이블 이름은 당신이 그것에 같은 것을 참조 할 때 따옴표를 사용할 필요가 소문자로되어 있지 않은 경우 : 어쩌면

String query = "SELECT * FROM clients"; 
String query = "SELECT * FROM CLIENTS"; 
String query = "SELECT * FROM \"clients\""; 
String query = "SELECT * FROM \"CLIENTS\""; 
String query = "SELECT * FROM Clients"; 

:

String query = "SELECT * FROM \"Clients\""; 
+0

그게 고마워, 많이 했어 :) – Matt

+0

나는 ORM을 sequelize를 사용하려고하는데, 그것의 생성 질의에서 table_name에 따옴표를 사용한다. 답변 해주셔서 감사합니다. – Kiddo

0

CoolBeans의 제안 외에도 관련 db 또는 스키마에 대한 권한이없는 다른 사용자로 db에 연결할 수도 있습니다. 연결 문자열을 표시 할 수 있습니까?

+0

postgresql을 배우기 위해 사용하고있는 작은 데이터베이스이므로 나는 유일한 데이터베이스 사용자 (postgres/root 사용자)입니다. 내 원래의 질문에 연결 문자열을 편집에 포함 시켰습니다. 지금까지 도움을 주셔서 감사합니다. – Matt

2

당신은 이러한 가능성을 확인할 수 있습니다 그 중 하나가 작동합니다.

+0

first, second 및 last 문은 정확히 동일한 테이블 이름을 참조합니다. –

관련 문제