MySQL 8 대소문자 구분 설정

MySQL Database는 기본적으로 대소문자를 구분하도록 되어있다. (UNIX/LINUX)
Windows 시스템에서는 상관이 없는데 UNIX/Linux 시스템에서는 구분을 하게 되어있으므로 주의하도록 한다.

대소문자 구분을 하지 않도록 하기 위해서는 아래와 같이 my.cnf 에 설정하여야 한다.

[mysqld]
lower_case_table_names = 1

간혹 이미 설정하기 전에 대문자가 들어간 Database나 Table를 만들어놓고 이후에 적용하려고 하면 오류가 나면서 데이터베이스 엔진이 기동되지 않는 경우가 있다.

이럴 경우 방법은 아래와 같이 여러가지 방법이 있다.

  1. 데이터베이스 초기화
  2. 대문자를 소문자로 변경 후 재기동
  3. 데이터베이스 백업/복구

일단 모든 데이터 베이스를 초기화 하는 방법이다.

리눅스인 경우 데이터 파일이 /usr/lib/mysql/ 디렉토리에 아래에 저장되는데 그냥 이 디렉토리 내의 모든 파일을 다 삭제하는 것이다.
다 삭제한 이후에 데이터베이스를 처음부터 새로 구성하는 방법이다.

# 일단 데이터베이스를 정지시키고
[root@test7 ~]# systemctl stop mysqld

# 데이터 파일을 모두 제거
[root@test7 ~]# rm -rf /var/lib/mysql/*

# 설정 변경
[mysqld]
lower_case_table_names=1

# 재기동
[root@test7 ~]# systemctl start mysqld

이미 만들어져 있는 데이터베이스/테이블의 이름을 일단 소문자로 모두 변경 후 재기동 하는 방법이다.

mysql> select concat('rename table ', table_name, ' to ' , lower(table_name) , ';') from information_schema.tables where table_schema = 'your_schema_name';

참조링크 : https://stackoverflow.com/questions/1262258/mysql-case-sensitive-tables-conversion

방법 1과 같은 방법이다.
먼저 데이터를 백업한 후 방법 1을 적용하고 나중에 다시 복구하는 방법이다.
MySQL DB Backup / Restore를 참조하면 된다.

로그인하면 댓글을 남길 수 있습니다.
  • mysql_8_대소문자_구분설정.txt
  • 마지막으로 수정됨: 2020/02/18 04:14
  • 저자 koov