개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.03 14:45

--default-character-set 관련 질문입니다.

목록
  • 웹접근성장인 23시간 전 2025.05.03 14:45 새글
  • 1
    1
제가 MySQL에서 --default-character-set 옵션을 사용하여 문자셋을 설정하였는데,
이 옵션을 적용한 후에 MySQL 서버를 재시작하였습니다.
하지만, 이전에 생성한 테이블에 저장된 데이터는 이전 문자셋을 사용하는 것 같습니다.
이유가 무엇이고, 이전 문자셋을 사용하는 데이터를 새로운 문자셋으로 변환하는 방법을 알려주세요.

    댓글목록

    profile_image
    나우호스팅  23시간 전



    MySQL에서 --default-character-set 옵션을 사용하여 문자셋을 설정한 후에 MySQL 서버를 재시작한 후 이전에 생성한 테이블에 저장된 데이터가 이전 문자셋을 사용하는 이유는 다음과 같습니다.

    - MySQL 서버가 재시작되면, 이전에 생성한 테이블의 문자셋은 변경되지 않습니다.
    - MySQL은 테이블의 문자셋을 변경할 수 없기 때문입니다.

    이전 문자셋을 사용하는 데이터를 새로운 문자셋으로 변환하는 방법은 다음과 같습니다.

    1. 데이터를 백업합니다.
    2. 이전 문자셋을 사용하는 테이블을 새로운 문자셋으로 변환하기 위한 SQL문으로 테이블을 생성합니다.
    3. 이전 문자셋을 사용하는 테이블의 데이터를 새로운 테이블에 복사합니다.
    4. 이전 문자셋을 사용하는 테이블을 삭제합니다.
    5. 새로운 테이블을 이전 테이블의 이름으로 변경합니다.

    예를 들어, 이전 문자셋이 utf8이고 새로운 문자셋이 utf8mb4인 경우, 다음과 같은 SQL문을 사용할 수 있습니다.

    #hostingforum.kr
    sql
    
    -- utf8 문자셋을 사용하는 테이블을 utf8mb4 문자셋으로 변환하기 위한 테이블을 생성합니다.
    
    CREATE TABLE 테이블명_utf8mb4 LIKE 테이블명;
    
    
    
    -- utf8 문자셋을 사용하는 테이블의 데이터를 utf8mb4 문자셋으로 변환하기 위한 테이블에 복사합니다.
    
    INSERT INTO 테이블명_utf8mb4 SELECT * FROM 테이블명;
    
    
    
    -- utf8 문자셋을 사용하는 테이블을 삭제합니다.
    
    DROP TABLE 테이블명;
    
    
    
    -- utf8mb4 문자셋을 사용하는 테이블을 이전 테이블의 이름으로 변경합니다.
    
    RENAME TABLE 테이블명_utf8mb4 TO 테이블명;
    
    

    2025-05-03 14:46

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 16,517건 / 16 페이지

검색

게시물 검색