MySQL에서 Data Too Long 이라는 오류를 만났을 경우...
실제로 데이터가 짧은줄 알았다.

그래서 필드를 LongText로 고쳤는데도 이런 오류가.. OTL..
(LongText의 경우 4GB까지의 글자수를 넣을 수 있다는데-_-;;)

실제로 데이터 길이를 보니 4천자가 조금 넘는-_-



찾아보니, 기본설정상,  MySQL4.x에서는 Too Long Data는 auto-truncate되고 warning을 제시했는데,
5.x에서는 error를 발생시킨다고 한다.
http://www.webmasterworld.com/forum112/575.htm


아래는 다음 주소의 페이지에 나오는 글 중 일부이다.
http://dev.mysql.com/doc/refman/5.1/en/char.html

If you assign a value to a CHAR or VARCHAR column that exceeds the column's maximum length, the value is truncated to fit. If the truncated characters are not spaces, a warning is generated. For truncation of non-space characters, you can cause an error to occur (rather than a warning) and suppress insertion of the value by using strict SQL mode. See Section 5.2.5, “The Server SQL Mode”.




5.x에서 error를 warning으로 바꾸려면, SQL 초기화 설정값 중 SQLMODE라는 것을 수정해 주어야한다고..
http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html


실제로 5.x의 서비스시작설정을 찾아보면 SQLMODE에 'STRICT_TRANS_TABLES' 라는 내용이 있다!!
이 모드는 데이터가 길이를 초과할 때 auto-truncate되는 것이 아니라 error를 발생시키는 것!


결국 설정을 바꿔서, 서비스를 다시 시작한 후, 오류가 발생하지도, 데이터가 잘리지도 않았다.


-_-a
그런데 4천자가 조금 넘는 데이터가 왜 'Data Too Long'이라는 오류를 낸 것인지는 의문-_-


http://forums.mysql.com/read.php?103,51906,103853
여기에서보면 turkish characte-set을 사용하는 사람도 같은 방식으로 문제를 해결했다고...


원인을 더 찾아보고싶지만, 짧은 영어와 귀찮음의 압빡으로 인하여 여기서 이만...



참고로, MySQL ODBC 3.5와 ADODB로 작업한 결과입니다.
database와 table, field의 characterset은 euc-kr로 되어있습니다.
by 나무귀신 | 2006/07/25 20:04 | tech | 트랙백 | 덧글(3)
트랙백 주소 : http://schoolor.egloos.com/tb/2296271
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 푸름 at 2006/12/26 15:32
sql mode 를 어디서 고쳐야 해요?
Commented by 강원철 at 2007/02/02 15:57
mysql 설정파일
my.conf
Commented by 초보 at 2011/11/24 04:51
sql mode를 뭘로 수정해야하나요

:         :

:

비공개 덧글



< 이전페이지 다음페이지 >