C# 에서 mysql 로 binary 를 저장할 때 저장하는 데이터가 짤립니다.
제목그대로입니다. 뒤져봐도 별 게 없어서 찾다가 혹시나 해서 질문올려 봅니다.
일단 , 환경은
--- 클라이언트 ---
Windows 7
Visual Studio 2010
C#
MySql dll
--- 서버 ---
CentOS + Apache
하려는 건 제목대로
1. client 의 C# 프로그램에서
2. binary data 를
3. server 의 mysql db 에
4. 읽고쓰고
입니다.
인터넷 찾아보니 예제가 쉽게 나와서 해 봤는데, 제대로 안 되더군요.
예제는 stackoverflow, mysql 사이트에서 찾아서 그대로 해 봤습니다.
http://stackoverflow.com/questions/13208349/how-to-insert-blob-datatype
https://dev.mysql.com/doc/connector-net/en/connector-net-programming-blob-writing.html
예제 보면 정말 별거 없고, 저도 그리 문제될 거라고 생각 안 해봤지만, 실제로 해보니 다음과 같은 현상이 일어납니다.
11. 테스트는, 이미지 파일들을 서버에 올리고 내려서, 제대로 저장되고, 다운로드 한 이미지가 원래 이미지와 같은지 눈으로 확인하는 방법으로 했습니다.
12. 이미지를 binary 로 읽어서 디비에 저장할 때, 저장되는 이미지 크기가 client에서 선택한 원본 이미지의 크기보다 작습니다. ( = 짤립니다. )
13. 대략 1/3 정도 짤리는 것 같습니다.
14. 혹시나 해서 뒤져봤는데, mysql 의 max_allow_packet 은 1M 입니다.
-> show variables where Variable_name = 'max_allowed_packet' 결과 : 1048576
15. 8k 이하의 이미지는 모두(제대로) 저장됩니다.
16. 10k 넘는 이미지는 짤립니다.
17. 서버에 저장이 제대로 되고 클라이언트에서 다운로드 할 때 짤리는 게 아니라, 서버에 저장되는 용량 자체가 짤린겁니다.
18. 위의 두 예제를 실행할때 exception 이 발생하지 않고, 정상 실행완료 됩니다.
혹시 비슷한 현상을 경험하신 분이나 검색 방향, 힌트 , 고견, 말씀 기타등등등을 언급해 주시면 대단히 감사하겠습니다.
이거 분명히 별 거 없을 거 같은데, 왜 안되는지 모르겠네요.
이상입니다. 좋은 하루 되시기 바랍니다.
댓글 달기