Python으로 DB에 insert 문을 execute 했는데 다음과 같은 에러 로그가 뜬다...

 

# 에러 로그
pymysql.err.DataError: (1406, "Data too long for column 'book' at row 1")

 

DB 스카마가 잘못된 줄 알고 Column 사이즈도 늘려봤지만 여전히 같은 문구의 에러를 출력한다.

 

-- Strict mode 확인하기 

-- MySQL이나 MariaDB에서 데이터 insert 할 때 문제가 되는 부분을 점검하는 걸로 보인다.
-- 아래와 같은 구문을 통해서 현재의 모드를 확인할 수 있다.

select @@global.sql_mode;
+-------------------------------------------------------------------------------------------+
| @@global.sql_mode                                                                         |
+-------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------+

 

 

 

 

 

 

자세히 읽어보면 테이블로 데이터 전송을 엄격하게하고, 영으로 나누지 못하게하고.. 여러가지 방법으로 보호하나보다. 찾아보니 Data too long~ 에러를 일으키는 원인은 STRICT_TRANS_TABLES 이었다. 과감하게 이 부분을 지운다.

 

 

 set @@global.sql_mode = "ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

 

 

이제 insert가 정상적으로 된다!

리눅스 환경이라면 /etc/my.cnf 부분에 접속해서 기본 설정을 직접 바꿔주고 설정을 적용하여 실행하게 하는 것도 방법이다.

 

 

 

 

 

 

+ Recent posts

"여기"를 클릭하면 광고 제거.