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 으로
바꿔주시면 됩니다

'DB' 카테고리의 다른 글
[우분투] 명령어 정리 (0) | 2023.01.05 |
---|---|
[리눅스] mariadb, apache, php 설치(우분투 22.04) (0) | 2023.01.05 |
[mysql] 특정 프로시저 생성/수정/실행 권한 부여 (0) | 2023.01.04 |
[MySQL] Hedisql 프로시저 함수 생성 및 암호화,복호화 (0) | 2022.12.29 |
php - 외부 마리아 db 연동(원격 접속 허용) (0) | 2022.11.22 |