FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problema con inserción de BLOB MySQL desde C++ con libmysql
Hola, buenas tardes,
Tengo una aplicación en C++Builder con cuatro módulos ejecutables, de los cuales, 3 insertan imagenes en campos BLOB Los primeros errores fueron en máquinas XP, el error fue este: "can't send long data for non-string/non-binary data types" Después de verificar que el procedimiento no tuviera errores, actualicé la libmysql.dll a la 5.5.24, a partir de ese momento, el error cambió a: "No se pudo insertar el parámetro: Lost connection to MySQL server during query" Después de leer mucha documentación, en my.ini, en la sección [mysqld] agregué esto: max_allowed_packet=32M wait_timeout=288000 skip-name-resolve y el mensaje de error cambió, ahora dice: "Argumentos errados para mysqld_stmt_execute" DATOS EXTRA: Los 3 módulos utilizan la misma clase para inserción, 2 de los módulos nunca han generado ningún mensaje de error, pero el tercero, genera mensajes diversos en cientas condiciones que no puedo determinar ni reproducir.¿Alguien tiene alguna solución o alguna sugerencia de por donde encarar el problema? Estoy completamente perdido, y lo peor es que no puedo reproducir el fallo. Saludos y gracias por anticipado. P.D.: Les copio el procedimiento de inserción de BLOBs: Código:
bool TBaseDeDatos::AlmacenarBLOB(AnsiString cons, const char *param, unsigned long lngParam) { lcl_MySQL_Error = ""; lcl_NumFilas = 0; lcl_CodError = 0; mysql = mysql_init(NULL); my_bool reconnect = 1; if (!mysql) { lcl_MySQL_Error = "No se pudo inicializar la base de datos: " + (AnsiString) mysql_error(mysql); return false; } else { mysql_options(mysql, MYSQL_OPT_COMPRESS, 0); mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect); mysql->reconnect = 1; if (!mysql_real_connect(mysql, prihost.c_str(), priusr.c_str(), pripass.c_str(), prinombd.c_str(), PuertoMYSQL, NULL, 0)) { lcl_MySQL_Error = "No se pudo conectar a la base de datos: " + (AnsiString) mysql_error(mysql); return false; } else { if (mysql_select_db(mysql, prinombd.c_str())) { lcl_MySQL_Error = "No se pudo abrir la base de datos: " + (AnsiString) mysql_error(mysql); return false; } else { MYSQL_BIND bind[1]; unsigned long length; st_mysql_stmt *stmt = mysql_stmt_init(mysql); if (!stmt) { lcl_MySQL_Error = "No hay memoria suficiente: " + (AnsiString) mysql_error(mysql); return false; } if (mysql_stmt_prepare(stmt, cons.c_str(), StrLen(cons.c_str()))) { lcl_MySQL_Error = "No se pudo preparar la consulta: " + AnsiString(mysql_stmt_error(stmt)); return false; } memset(bind, 0, sizeof(bind)); bind[0].buffer_type = MYSQL_TYPE_BLOB; bind[0].buffer = (char*)param; bind[0].length = &length; bind[0].is_null = 0; mysql_ping(mysql); if (mysql_stmt_bind_param(stmt, bind)) { lcl_MySQL_Error = "No se pudo enlazar el parámetro: " + AnsiString(mysql_stmt_error(stmt)); return false; } if (mysql_stmt_send_long_data(stmt, 0, (const char *)param, lngParam)) { lcl_MySQL_Error = "No se pudo insertar el parámetro: " + AnsiString(mysql_stmt_error(stmt)); return false; } if (mysql_stmt_execute(stmt)) { lcl_MySQL_Error = "No se pudo ejecutar la consulta: " + AnsiString(mysql_stmt_error(stmt)); return false; } ultimoID = mysql_insert_id(mysql); } } return true; } } |
#2
|
|||
|
|||
Corrijo
El mensaje no se presenta solamente en Windows XP, sino que se presenta cuando intento acceder a MySQL ubicado en un servidor de la red o remoto.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problema para guardar datos desde campo Blob al disco duro | phirum1984 | Conexión con bases de datos | 5 | 16-10-2013 18:39:35 |
insercion jpg mysql problema:= tamaño jpg | vroa74 | Gráficos | 5 | 24-11-2011 21:07:02 |
migrar blob de firebird a blob mysql | mavirroco | Varios | 1 | 02-02-2011 14:40:58 |
Ayuda con insercion de imágenes en campo blob | aojeda | Gráficos | 0 | 29-01-2009 18:23:46 |
Inserción y recuperación de campos BLOB | Ismael Campos | PHP | 4 | 16-08-2007 07:12:43 |
|