List:MySQL++« Previous MessageNext Message »
From:Ron Olson Date:July 6 2007 2:09pm
Subject:Blobs getting truncated?
View as plain text  
Aloha-

I just started using MySQL++ and while I like it a lot, I'm having a strange
problem with saving blobs to the database. Basically, any image over 64k
gets truncated; the image goes grey in the query browser, and when I export
the image, I get a lot of noise, though the first 64k of it is fine..

I'm using MySQL++ 2.3.0 (just released) with VS2005 on XP and it's talking
to a MySQL database: mysql  Ver 14.7 Distrib 4.1.20, for redhat-linux-gnu
(i686) using readline 4.3

Below is the code I'm using. Might anyone have an idea what I'm doing wrong?
I tried following the example off the MySQL++ website, but it didn't seem to
work at all (in that it never actually put the record in the table). This
code does, but like I said, doesn't seem to send all of it:


#include <mysql++.h>
#include <custom.h>
#include <transaction.h>

#include <iostream>
#include <iomanip>
#include <fstream>

using namespace std;

int main(int argc, char* argv[])
{
    mysqlpp::Connection con(false);

    con.connect("mydatabase", "mysqlserver", "binuser", "binuser");


    ifstream img_file("c:/temp/winter.jpg", ios::binary | ios::in);
    if (img_file.is_open())
    {
        try
        {
            {
                std::ostringstream escbuf;
                escbuf << img_file.rdbuf();

                // just a test ... this creates the whole jpg okay
                string test(escbuf.str());
                ofstream outStream("c:/temp/hmm.jpg", std::ios::ate |
std::ios::out | std::ios::binary);
                outStream.write(test.c_str(), test.length());
                outStream.flush();
                outStream.close();

                mysqlpp::Query query = con.query();
                query << "INSERT INTO blobtest (id, filename, data)
VALUES(6, 'winter.jpg', \"" << mysqlpp::escape << escbuf.str() << "\")";


                mysqlpp::ResNSel res = query.execute();

            }
        }
        catch (const mysqlpp::BadQuery& er)
        {
            // Handle any query errors
            cerr << "Query error: " << er.what() << endl;
            return -1;
        }
        catch (const mysqlpp::BadConversion& er)
        {
            // Handle bad conversions
            cerr << "Conversion error: " << er.what() << endl <<
            "\tretrieved data size: " << er.retrieved <<
            ", actual size: " << er.actual_size << endl;
            return -1;
        }
        catch (const mysqlpp::Exception& er)
        {
            // Catch-all for any other MySQL++ exceptions
            cerr << "Error: " << er.what() << endl;
            return -1;
        }
    }

    con.close();

   return 0;
}

Thanks,

Ron

Thread
Blobs getting truncated?Ron Olson6 Jul
Re: Blobs getting truncated?Ron Olson7 Jul