sql 테이블명을 tableName 이런식으로 작성했는데, 콘솔에서 쿼리문을 작성할때 " " 따옴표를 붙여야만 인식이 되는 현상이 발생했다.
select * from "testTable" // 인식 가능
select * from testTable // 인식 불가
쿼리문 따옴표 사용
- 데이터베이스 테이블 이름에 따옴표를 사용하면 대/소문자, 특수문자 등을 포함할 수 있다.
- 따옴표를 사용하지 않으면 데이터베이스 시스템에 따라 대/소문자를 구분하거나 구분하지 않을 수 있다.
- 따옴표로 감싸진 테이블 이름은 데이터 베이스 시스템에서 그대로 인식된다.
lower_case_table_names = 0 // 테이블 생성 및 조회 시 대·소문자 구분
lower_case_table_names = 1 // 입력 값이 관계없이 소문자로 인식
lower_case_table_names = 2 // 대·소문자를 구분해서 테이블생성
0과 2의 차이가 불명확해 보여서 찾아봤는데 차이가 아래와 같다고 한다. 그런데 보통 0과 1을 사용하고 2는 잘 사용하지 않는다고 한다.
lower_case_table_names 0과 2 차이
lower_case_table_names = 0
- 테이블 이름의 대소문자를 구분합니다.
- 테이블 생성 및 조회 시 대소문자를 그대로 인식합니다.
lower_case_table_names = 2
- 테이블 이름의 대소문자를 구분합니다.
- 테이블 생성 시 입력한 대소문자 그대로 저장됩니다.
- 테이블 조회 시 대소문자를 구분해서 인식합니다.
데이터베이스 별 구분
MySQL, PostgreSQL 등은 데이터베이스의 대/소문자를 구분한다.
Oracle, SQL Server 등은 데이터베이스의 대/소문자를 구분하지 않는다.
시스템 OS 별 차이
특히, 맥 환경에서는 데이터베이스 시스템에 따라 대/소문자 구분 여부가 다를 수 있으므로 따옴표 사용이 권장된다.
해결방법
프로젝트 구성원의 작업환경이 다르기도하고, 다른 이유로 인해 테이블을 두개로 나누게 되면서 테이블명에서 대문자를 제거했다.
참고자료
https://stackoverflow.com/questions/9538668/postgresql-forces-lowercase-names