오류 모음집

[MariaDB] Data too long for column 에러

로춘남 2021. 1. 22. 11:16
728x90

csv파일을 MariaDB에 넣으려고하는데 오류가 생겼다..

1406, "Data too long for column '컬럼명' at row 1")

 

그래..대략 길이가 길어서 안되는가보다 싶어서 varchar의 값을 늘려줬는데 그래도 안되더라 오잉 뭐지?

검색을 해보니 MariaDB 혹은 MySQL의 환경설정값의 문제라고 했다.

 

-- 먼저 현재 나의 DB를 확인해볼 필요가 있었다.--

MariaDB [(none)]> 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 for column이 나오는 원인은 바로 STRICT_TRANS_TABLES 값이라고 한다.

이녀석이 변환하는 과정에서 길이를 제한하고 있다고 하니 없애주도록 하자

MariaDB [(none)]> set @@global.sql_mode = "ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> select @@global.sql_mode;
+-----------------------------------------------------------------------+
| @@global.sql_mode                                                     |
+-----------------------------------------------------------------------+
| ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------+
1 row in set (0.000 sec)

set @@global을 통해 환경을 다시 설정을 해주고, 이후 sql_mode를 다시 확인해보면

앞서 있었던 STRICT_TRANS_TABLES가 사라진것을 알 수 있다.

 

나는 MariaDB를 사용했지만, 체계가 비슷한 MySQL에서도 아마 비슷하게 적용되지 않을까 생각해보았다.

728x90