본문 바로가기

[IT/Programming]/Algorithm/Database

MySQL SQLException in Ubuntu, Linux

반응형
# MySQL SQLException in Ubuntu, Linux 우분투, 리눅스에서 MySQL 을 써서 서버를 돌릴일이 생겼는데, 문제가 생긴걸 공유하려고 글 작성. 윈도우즈나 맥에서는 MySQL 의 Table name (테이블 이름) 이 대소문자를 구분 안했는데, 우분투/리눅스에서는 대소문자를 기본적으로 구분한다고 함. 그래서 초기에 설치할때부터 대소문자를 무시하도록 설정되도록 설치해야 함. 이거 때문에 MySQL DB Server 에 접속은 됐는데, 특정 Table 을 찾을 수 없다는 등의 SQLException 이 계속 났음. ## PH
  • 2025-04-04 : First posting.
## TOC ## MySQL의 Global Variables 중에는 lower_case_table_names 라는 속성이 있음. 해당 변수는 0~2의 세가지 옵션이 있다. ```[.linenums] 0 (Linux/Unix 환경에서 default) : 데이터베이스 및 테이블 생성/조회시 대소문자 구분 1 (Windows 환경에서 default) : 대소문자 구분 안함 (전부 소문자로 변환) 2 (MacOS 환경에서 default) : 데이터베이스 및 테이블 생성 시 대소문자 구분, 조회 시 소문자로 변환 ```/ MySQL install 후 lower_case_table_names = 1 로는 에러가 자꾸나서 어려운거 같고 lower_case_table_names = 2 로 설정해 줍시다. ```[.linenums] sudo mysqld --initialize --lower_case_table_names=2 # mysql이 /etc 하위에 설치되었다고 가정할 때 sudo vi /etc/mysql/my.cnf #아래 텍스트를 추가한다. # 2로 변경한다고 가정할 때 [mysqld] lower_case_table_names = 2 default-time-zone = '+00:00' # /etc/mysql/mysql.conf.d/mysqld.cnf 파일도 수정 sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf # 2로 변경한다고 가정할 때 [mysqld] lower_case_table_names = 2 default-time-zone = '+00:00' ```/ 이후 mysql을 재시작한다. ```[.linenums] sudo systemctl restart mysqld sudo mysql -u root -p # 초기 패스워드는 empty 일테니 그냥 enter 치면 접속 됨. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password'; FLUSH PRIVILEGES; CREATE DATABASE `Recoeve01`; USE `Recoeve01`; CREATE USER 'eve'@'localhost' IDENTIFIED BY '{--password--}'; GRANT ALL ON `Recoeve01`.* TO 'eve'@'localhost'; FLUSH PRIVILEGES; SELECT @@global.time_zone, @@session.time_zone; +--------------------+---------------------+ | @@global.time_zone | @@session.time_zone | +--------------------+---------------------+ | +00:00 | +00:00 | +--------------------+---------------------+ exit; ```/ ## Backup 된 database 불러오기 ```[.linenums] mysqldump --extended-insert=true -u root -p recoeve01 > mydump.sql mysql -u root -p recoeve01 < mydump.sql ```/ ## RRA
  1. koline.log :: [Database][MySQL] 테이블명 대소문자 구분 설정
반응형