Postgresql 데이터베이스의 libpq 라이브러리를 사용하고 있는데 db에서 bytea 데이터를 검색하는 데 문제가 있습니다. 나는 내 문제를 해결할 수 없어 당신에게 물어보고 싶었습니다. 이미지 파일을 db에 삽입하고 다시 가져 오려고 할 때마다 데이터를 반환하는 크기는 항상 내가 보낸 데이터의 2 배입니다. 실제로 정확한 식은 다음과 같습니다. 검색된 데이터 = 전송 된 데이터 * 2 + 2. (바이트 단위)./Postgresql 데이터베이스에서 이미지 파일을 검색하면 더 큰 데이터가 두 번 더 반환됩니다 (libpq 라이브러리에서)
내가 사용하는 예제 코드는 다음과 같다 : 너희들이 나를 도와 주면 내가 감사
PGresult* res;
const char* paramValues[1] = {plateImageArray.data()}; // data type is const char*
int paramLengths[1] = {plateImageArray.size()}; // size of image is 58573 bytes
int paramFormats[1] = {1}; // 1 for byte, 0 for text
res = PQexecParams(conn,
"INSERT INTO \"plates\" (plateImage) VALUES ($1::bytea)",
1, /* param number */
NULL, /* param type */
paramValues, /* param values*/
paramLengths, /* param lengths */
paramFormats, /* default to all text params */
1); /* return type, 1 for text. */
res = PQexec(conn,"Select * from \"plate_images\" WHERE ...."); /*returns 1 tuple : something/something/image(bytea) */
int lengthOfPlateImage=PQgetlength(res,0,2); // indicates 117148 bytes, exactly 2 times of sent data +2
그래서, 나는 아마 뭔가가있어, 아직 그것을 알아낼 수 없었다. 나는 그 이유에 대해 치명적인 지쳐있다. 사전에
감사합니다.
편집 : 디스크에 저장된 데이터를 추적했으며 삽입 된 데이터의 크기는 동일합니다 (58573 바이트). 그것을 얻는 동안 두 배 더 큰 데이터가됩니다 ...