Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

맨땅에 코딩

[MySQL] Data too long for column 에러 : strict mode 해제 (my.ini) 본문

DB

[MySQL] Data too long for column 에러 : strict mode 해제 (my.ini)

맨땅 2022. 12. 28. 13:18

목차

    반응형

     

    password를 암호화하여 DB에 넣는 작업을 수행 중 계속 Data too long for column 에러가 떴습니다

     

    데이터 유형을 longtext, blob, longblob, varchar(10000000) 이것저것 다 바꿔봤는데도 안되서 애먹는 중

     

    한가지 가설을 발견했습니다

     

     

    바로 strict mode가 활성화되어있어서 그럴수도 있다는 것이었습니다

     

     

    우선 쿼리문에 sql mode를 확인

     

    SELECT @@global.sql_mode;

     

    결과값이 STRICT_TRANS_TABLES..... 로 뜬다면 현재 STRIT MODE인 것이다

     

     

    따라서 쿼리에 아래와 같은 코드를 입력해줬다

     

     SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
    
     SET SESSION sql_mode = 'NO_ENGINE_SUBSTITUTION';

     

    해결됐으나 이 방법을 사용할경우 실행할때마다 원래되로 변경될 것이라고 한다

     

    그러니 my.ini 파일을 찾아 주석 처리 해야한다 (my.ini - 윈도우 / my.cnf - 리눅스)

     

     

    윈도우에서 my.ini 파일은 숨김 파일이므로 숨김 파일 포함으로 찾아준다

     

    1. 보호된 운영 체제 파일 숨기기(권장) - 해제

    2. 숨김 파일, 폴더 및 드라이브 표시 - 선택

     

     

     

    ProgramData - MySQL - MySQL Server - my.ini 에 아래 코드 입력 (저는 없어서 맨 아래에 추가해줬습니다)

     

    만약 sql-mode="STRICT_TRANS_TABLES" 로 되어 있으시다면 아래의 코드로 바꿔주시면 됩니다

     

    # Set the SQL mode to strict
    sql-mode="NO_ENGINE_SUBSTITUTION"

     

    여기까지 하셨는데도 LIMIT 1000이 뜨면서 데이터가 제대로 안들어가고 잘릴경우

     

    HediSQL의 경우 도구 - 환경 설정 - 데이터 외관에서 데이터 탭에 표시되는 행의 수 (단계/최대) : 100000 : 100000 으로 

     

    바꿔주시면 됩니다

     

     

     

     

     

    반응형