README_SAFE.md 4.2 KB

DDL 실행 순서 가이드 (안전 버전)

벤더사-인플루언서 시스템의 데이터베이스 스키마를 구축하기 위한 DDL 파일들의 실행 순서입니다.

중복 에러 방지 버전 (권장)

기존 DDL에서 중복 컬럼/인덱스 에러가 발생하는 경우 아래 안전 버전을 사용하세요.

실행 순서 (안전 버전)

1단계: 기본 테이블 생성

mysql -u [username] -p [database_name] < ddl/001_create_vendor_influencer_mapping_table.sql
mysql -u [username] -p [database_name] < ddl/002_add_vendor_influencer_mapping_indexes.sql
mysql -u [username] -p [database_name] < ddl/003_add_vendor_influencer_mapping_foreign_keys.sql

2단계: 컬럼 추가 (안전 버전)

mysql -u [username] -p [database_name] < ddl/004_add_vendor_list_additional_columns_safe.sql
mysql -u [username] -p [database_name] < ddl/005_add_user_list_additional_columns_safe.sql

3단계: 보조 테이블 생성

mysql -u [username] -p [database_name] < ddl/006_create_partnership_history_table.sql
mysql -u [username] -p [database_name] < ddl/007_create_notification_table.sql
mysql -u [username] -p [database_name] < ddl/008_create_sample_data_inserts.sql

4단계: 인덱스 추가 (안전 버전)

mysql -u [username] -p [database_name] < ddl/009_add_vendor_list_indexes_safe.sql
mysql -u [username] -p [database_name] < ddl/010_add_user_list_indexes_safe.sql

안전 버전 특징

1. 컬럼 중복 방지

  • 각 컬럼 추가 전 INFORMATION_SCHEMA.COLUMNS에서 존재 여부 확인
  • 이미 존재하는 컬럼은 건너뛰고 정보 메시지 출력
  • 에러 없이 안전하게 실행 가능

2. 인덱스 중복 방지

  • 각 인덱스 추가 전 INFORMATION_SCHEMA.STATISTICS에서 존재 여부 확인
  • 이미 존재하는 인덱스는 건너뛰고 정보 메시지 출력
  • 여러 번 실행해도 안전

3. 동적 SQL 사용

SET @sql = IF(
    (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS 
     WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'VENDOR_LIST' AND COLUMN_NAME = 'CATEGORY') = 0,
    'ALTER TABLE `VENDOR_LIST` ADD COLUMN `CATEGORY` varchar(50) DEFAULT NULL',
    'SELECT "CATEGORY column already exists" as info'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

파일 설명

안전 버전 파일들

  • 004_add_vendor_list_additional_columns_safe.sql: VENDOR_LIST 컬럼 추가 (중복 방지)
  • 005_add_user_list_additional_columns_safe.sql: USER_LIST 컬럼 추가 (중복 방지)
  • 009_add_vendor_list_indexes_safe.sql: VENDOR_LIST 인덱스 추가 (중복 방지)
  • 010_add_user_list_indexes_safe.sql: USER_LIST 인덱스 추가 (중복 방지)

기존 버전 파일들

  • 004_add_vendor_list_additional_columns.sql: 원본 버전 (중복 시 에러)
  • 005_add_user_list_additional_columns.sql: 원본 버전 (중복 시 에러)
  • 009_add_vendor_list_indexes.sql: 원본 버전 (중복 시 에러)
  • 010_add_user_list_indexes.sql: 원본 버전 (중복 시 에러)

사용 시나리오

신규 설치

  • 안전 버전을 사용하여 에러 없이 설치

기존 시스템 업데이트

  • 안전 버전을 사용하여 기존 데이터 보호하면서 업데이트

개발/테스트 환경

  • 여러 번 실행이 필요한 경우 안전 버전 사용

주의사항

  1. 순서 중요: 반드시 번호 순서대로 실행해야 합니다.
  2. 백업: 프로덕션 환경에서는 실행 전 반드시 데이터베이스 백업을 수행하세요.
  3. 권한: DDL 실행을 위한 적절한 데이터베이스 권한이 필요합니다.
  4. 테스트: 개발 환경에서 먼저 테스트 후 프로덕션에 적용하세요.
  5. 샘플 데이터: 008번 파일의 샘플 데이터는 개발/테스트 환경에서만 사용하세요.
  6. 안전 버전 권장: 중복 에러를 방지하려면 _safe 버전 사용을 권장합니다.

에러 해결

"Duplicate column name" 에러

  • 안전 버전(_safe) 파일 사용

"Duplicate key name" 에러

  • 안전 버전(_safe) 파일 사용

권한 에러

  • DDL 실행 권한 확인
  • ALTER, CREATE, INDEX 권한 필요

롤백

필요 시 역순으로 DROP COLUMN, DROP INDEX, DROP TABLE 실행