Java 프레임워크 만들기 - JSP

디비버 데이터베이스 테이블 명 자동 소문자 변환 해결 - DBeaver Database Auto Lower Case Table Name

carrotweb 2021. 5. 31. 12:29
728x90
반응형

테이블 명을 대문자로 입력(MBR_ACCOUNT_TB)하였는데 생성된 테이블은 소문자로 변경(mbr_account_tb)된 것을 확인할 수 있습니다.

그 이유는 마리아디비(MariaDB)가 윈도우에 설치될 때는 테이블 명에 대한 기본적으로 설정이 입력되는 모든 문자를 소문자로 변환하여 처리되게 설정되어 있기 때문입니다. (lower_case_table_names = 1)

소문자로 사용해도 문제는 없습니다.

그러나 개발은 개인 PC에서 하지만 운영은 리눅스 서버에서 한다면 테이블 명의 대소문자 구분은 고려해야 합니다.

리눅스에 설치되는 마리아디비(MariaDB)은 기본적으로 대소문자를 구분하게 설정되어있습니다. (lower_case_table_names = 0)

만약, 리눅스 서버에서 설치된 마리아디비(MariaDB)의 테이블명을 윈도우와 같이 소문자로만 사용하게 설정하였다면 문제는 없습니다. (lower_case_table_names = 1)

여기서는 리눅스에 설치되는 마리아디비(MariaDB)의 설정과 동일하게 윈도우에서도 대소문자 구분하게 설정하겠습니다.

1. 마리아디비(MariaDB) 설치 폴더에서 "data"폴더의 "my.ini"파일 메모장을 이용하여 오픈합니다.

 

마리아디비(MariaDB)가 기본 설정으로 설치하였다면 "C:\Program Files\MariaDB 10.5"로 되어 있습니다.

 

2. "my.ini"파일을 오픈합니다.

[mysql] 섹터의 마지막에 "lower_case_table_names = 2"를 추가하고 저장합니다.

 

3. 윈도우 "시작"(start) 버튼을 클릭하고 "스페이스 바"(Space Bar)을 클릭합니다. 입력창에 "서비스"입력 후 "서비스"를 클릭합니다.

마리아디비(MariaDB) 서비스를 다시 시작하기 위해 "MariaDB"를 찾아 선택하고 "다시 시작"을 클릭합니다.

 

4. 디비버(DBeaver)를 종료하여 다시 실행하거나 재연결을 합니다.

 

5. "mbr_account_tb"된 테이블 명을 "MBR_ACCOUNT_TB"로 입력하고 "저장"버튼을 클릭합니다.

"Persist"버튼을 클릭합니다. 쿼리문이 실행됩니다.

RENAME TABLE test.mbr_account_tb TO test.MBR_ACCOUNT_DB;

"RENAME"문을 이용해 테이블 명을 소문자에서 대문자로 변경하려 하지만 이미 있다고 에러 메시지가 나타납니다. 그 이유는 테이블 명은 대소문자 구분 없이 동일한 이름으로 사용할 수 없기 때문입니다.

 

 

유일한 방법은 이름을 변경한 다음에 다시 변경하는 것입니다.

6. "mbr_account_tb"된 테이블 명을 "MBR_ACCOUNT_TB1"로 입력하고 "저장"버튼을 클릭합니다.

"Persist"버튼을 클릭합니다. 쿼리문이 실행됩니다.

RENAME TABLE test.mbr_account_tb TO test.MBR_ACCOUNT_TB1;

만약 변경되지 않았다면 "Tables"에서 마우스 오른쪽 버튼을 클릭하여 콘텍스트 메뉴에서 [새로 고침]를 클릭합니다.

다시 "MBR_ACCOUNT_TB1"된 테이블 명을 "MBR_ACCOUNT_TB"로 입력하고 "저장"버튼을 클릭합니다.

"Persist"버튼을 클릭합니다. 쿼리문이 실행됩니다.

RENAME TABLE test.MBR_ACCOUNT_TB1 TO test.MBR_ACCOUNT_TB;

만약 변경되지 않았다면 "Tables"에서 마우스 오른쪽 버튼을 클릭하여 콘텍스트 메뉴에서 [새로 고침]를 클릭합니다.

 

다음과 같은 오류가 발생할 수 있습니다.

쿼리 테스트를 위해 디비버(DBeaver) 프로그램 메뉴 [SQL 편집기 > SQL 편집기]를 클릭합니다.

쿼리문을 입력하고 "SQL문 실행"버튼을 클릭합니다.

SELECT MBR_ID FROM test.MBR_ACCOUNT_TB;

쿼리문을 실행하면 필드 리스트에서 'MBR_ID'를 알 수 없는 컬럼으로 오류가 나타납니다.

SQL Error [1054] [42S22]: (conn=16) Unknown column 'MBR_ID' in 'field list'

쿼리문에는 문제가 없습니다.

그래서 테이블에 쿼리문으로 생성해보았습니다.

"MBR_ACCOUNT_TB"에서 마우스 오른쪽 버튼을 클릭하고 컨텍스트 메뉴에서 [SQL 생성 > SELECT]를 클릭합니다.

"Generated SQL"창에서 "Copy"버튼을 클릭하여 쿼리문을 복사합니다.

복사된 쿼리문을 붙여 넣기 하고 "SQL문 실행"버튼을 클릭합니다.

그러면 에러 없이 쿼리 되어서 나옵니다.

필드명에 "`"(어포스트로피 - Apostrophe)를 추가되어야 쿼리문에 오류가 없어진다면 컬럼명에 알 수 없는 문자나 코드가 깨져있는 문자가 있을 수 있습니다. 만약 컬럼명을 직접 입력하지 않고 웹페이지나 다른 유니코드 지원 프로그램에서 복사해서 붙여넣기할 경우 발생하는 것 같습니다.

해결 방법은 테이블 명이나 컬럼 명은 직접 입력하시기 바랍니다. 테이블 또는 전체 컬럼을 다시 생성해야 합니다.

728x90
반응형