이번 데이터베이스 프로젝트를 위해서 사용하는 프레임워크는 Django 이다.
하지만 Django 는 기본적으로 sqlite3 를 사용하며, 이는 ORM (Object Realational Mapper)으로 동작한다.
여기서 ORM이란, 객채(Object)의 관계(Relational)를 연결(Mapper)해주는 것을 뜻한다. 객체 지향적인 방법을 사용하여 데이터베이스의 데이터를 쉽게 조작할 수 있게 해주는 것이다. 즉, Django의 ORM이란, 파이썬과 데이터베이스의 SQL사이의 통역사 역할을 해준다.
그렇기 때문에 쿼리문을 이용해야하는 데이터베이스 프로젝트에서는 적절치 않았기 때문에 MySQL을 따로 연동해서 사용하고자 하였다. 그래서 오랜만에 mysql 을 찾아보니 맥북에서 전혀 인식을 못하더라...! reinstall 가자!
🔽 mysql 완전삭제
# 프로세스 죽이기
brew services stop mysql
# 설치 경로 확인
which mysql
/usr/local/bin/mysql
# homebrew로 삭제
brew uninstall --force mysql
🔽 mysql 설치
brew install mysql
# mysql 서비스 시작
brew services start mysql
# root 비번 생성
mysql_secure_installation
순서대로 아래 질문들이 나오면 y 또는 n을 입력하여 설정해준다.
비밀번호 복잡도 검사 과정 (n)
비밀번호 입력 & 확인
익명 사용자 삭제 (y)
원격 접속 허용하지 않을 것인가? (y)
test DB 삭제 (n)
previlege 테이블을 다시 로드할 것인지 (y)
설정을 마치면 All done! 메세지가 출력된다.
🔽 openssl 설치
brew install openssl
자 그리고 파이참 터미널에 다음가 같이 코드를 작성해준다.
# 가상환경 켜주기
conda activate <가상환경이름>
# mysqlclient 설치
pip install mysqlclient
하지만 어림도 없이 다음과 같은 에러 발생 💥
error: subprocess-exited-with-error
× Getting requirements to build wheel did not run successfully.
이 에러는 wheel 설치가 안됐다는 이야기 같은데, 이 오류를 해결하기 위해 긴 여정을 떠났다...
일단 터미널을 켜서 침착하게 문제를 해결해보았다.
# 환경 변수로 등록
echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc
# 환경 변수 반영
source ~/.zshrc
# mysqlclient 설치
LDFLAGS=-L/usr/local/opt/openssl/lib pip install mysqlclient
하지만 어림없이 실패! 구글링을 해보니 이게 Mac silicon M1 이상인 컴퓨터만 종종 바로 되는 사람도 있지만 실패하는 사람들도 많은것 같더라..
자 다시 가봅시다.
파이참 터미널에 다음과 같은 코드를 순서대로 실행해준다.
# mysql-client 설치
brew install mysql-client
# 그냥 이대로 치면 된다.
export LDFLAGS="-L/opt/homebrew/opt/mysql-client/lib"
export CPPFLAGS="-I/opt/homebrew/opt/mysql-client/include"
# 혹시 모르니 openssl도 다시 재설치 후 환경 변수 등록해준다.
brew uninstall --ignore-dependencies openssl@3
brew install openssl@3
export LDFLAGS="-L/usr/local/opt/openssl@3/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@3/include"
# pkg 설치
brew install pkg-config
# mysqlclient 설치
pip install mysqlclient
휴 드디어 완료...
다들 즐거운 코딩하세요~~ 😂
'Project' 카테고리의 다른 글
[DataBase][Mac/M1] MySQL과 Django 연동 (계정생성, 권한부여, DB생성) (0) | 2024.05.17 |
---|---|
[모바일/AndroidStudio]🌴도시열섬 어플리케이션 프로젝트 (1) | 2023.12.26 |
[해커톤][호남의 얼굴]얼굴인식 출석 서비스 (39) | 2023.09.04 |
[Toyproject][Linux/Unix] 영화관 키오스크 프로젝트 (0) | 2023.07.31 |