AI-DX education 3조_알약 프로젝트_7
첫번째 오류
1
2
3
4
5
6
7
8
9
10
11
12
# Database
# https://docs.djangoproject.com/en/4.0/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'aitech',
'USER' : 'root',
'PASSWORD' : 'password',
'HOST' : 'host',
'PORT' : '3306'
}
}
D:\3조_의약품\medicine\backend\discovery\discovery_myproj\settings.py 에서 해당 코드를 추가했더니
1
2
3
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
해당 에러가 뜸 해결방법 mysqlclient 설치해야함
- 가상 환경이 활성화되어 있는지 확인합니다.
- 다음 명령어를 실행하여 mysqlclient를 설치:
1
pip install mysqlclient
- 설치가 완료된 후 다시 makemigrations 명령어를 실행
1 2
python manage.py makemigrations python manage.py migrate
두번째 오류!
1
2
3
{
"error": "(1267, \"Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='\")"
}
이 에러는 오류 메시지 “Illegal mix of collations”는 데이터베이스에서 두 개 이상의 다른 문자 집합(콜레이션)을 비교할 때 발생하는 문제를 나타냅니다. MySQL에서 이 문제는 보통 테이블 또는 열의 문자 집합이 다를 때 발생합니다. 이를 해결하려면 모든 텍스트 필드의 문자 집합을 동일하게 맞춰야 합니다. 다음은 MySQL 데이터베이스의 모든 테이블과 열의 문자 집합을 동일하게 맞추는 방법입니다:
현재 데이터베이스의 기본 콜레이션이 latin1_swedish_ci로 설정되어 있습니다. 이를 utf8_general_ci로 변경해야한다.
- 데이터베이스의 콜레이션 변경
1
ALTER DATABASE your_database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
- 특정 테이블만 콜레이션 변경
우리 프로젝트의 mysql 테이블 중 drug에서 문제가 발생하므로 drug 테이블만 콜레이션을 변경한다.
1
ALTER TABLE drug CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
하지만 오류 발생
1
16:48:22 ALTER TABLE drug CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci Error Code: 1833. Cannot change column 'drug_no': used in a foreign key constraint 'drug_images_drug_no_df862dd7_fk_drug_drug_no' of table 'aitechdb.drug_images' 0.031 sec
검색해보니 drug 테이블의 drug_no 열이 외래 키 제약 조건을 가지고 있어서 발생합니다. 이를 해결하려면 외래 키 제약 조건을 일시적으로 제거하고 테이블의 콜레이션을 변경한 후, 외래 키 제약 조건을 다시 추가해야 합니다.
해결방법
1
2
3
4
5
6
7
8
9
10
11
12
13
-- 외래 키 제약 조건 제거
-- ALTER TABLE drug_images DROP FOREIGN KEY drug_images_drug_no_df862dd7_fk_drug_drug_no;
-- drug 테이블의 collation 변경
ALTER TABLE drug CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
-- drug_images 테이블의 외래 키 제약 조건 다시 추가
ALTER TABLE drug_images
ADD CONSTRAINT drug_images_drug_no_df862dd7_fk_drug_drug_no
FOREIGN KEY (drug_no) REFERENCES drug(drug_no);
-- drug_images 테이블의 collation 변경
ALTER TABLE drug_images CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
api 엔드포인트 성공
analyze/results
##
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.