포스트

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 설치해야함

  1. 가상 환경이 활성화되어 있는지 확인합니다.
  2. 다음 명령어를 실행하여 mysqlclient를 설치:
    1
    
    pip install mysqlclient
    
  3. 설치가 완료된 후 다시 makemigrations 명령어를 실행
    1
    2
    
    python manage.py makemigrations
    python manage.py migrate
    

두번째 오류!

error2

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 데이터베이스의 모든 테이블과 열의 문자 집합을 동일하게 맞추는 방법입니다:

  1. 데이터 베이스의 문자 집합 확인
    1
    
    SHOW VARIABLES LIKE 'collation_database';
    

    mysqlCheck

현재 데이터베이스의 기본 콜레이션이 latin1_swedish_ci로 설정되어 있습니다. 이를 utf8_general_ci로 변경해야한다.

  • 데이터베이스의 콜레이션 변경
    1
    
    ALTER DATABASE your_database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
    
  • 특정 테이블만 콜레이션 변경 mysqlTable 우리 프로젝트의 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

analyze_results

##


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.