Autor
|
Tema: Error al insertar BLOB con libmysql.dll (Leído 1,914 veces)
|
LucasBols
Desconectado
Mensajes: 5
|
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 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.
En este laboratorio tengo 3 máquinas (XP, Windows 7 y Windows 8) donde he probado este tercer módulo y no genera ningún error, sin embargo, en algunas de las máquinas de mis clientes, ese tercer módulo genera errores.
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"
Verifiqué las clases que realizan la inserción, las puse a prueba en mis 3 máquinas y en ningún momento saltó el error.
Los motores de mis clientes están en Linux y en Windows, en ambos ocasionalmente salta el error.
¿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.
|
|
|
En línea
|
|
|
|
LucasBols
Desconectado
Mensajes: 5
|
Estuve haciendo algunas modificaciones al my.ini, le agregué esto en la sección [mysqld]: max_allowed_packet=32M wait_timeout=288000 skip-name-resolve y el mensaje de error cambió, ahora dice: "Argumentos errados para mysqld_stmt_execute" Les copio el código del procedimiento de inserción de BLOB: 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; } }
|
|
|
En línea
|
|
|
|
LucasBols
Desconectado
Mensajes: 5
|
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.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Error insertar sub en virtual dub
« 1 2 3 »
Multimedia
|
soytiti
|
26
|
7,802
|
25 Octubre 2004, 02:54 am
por mbruch
|
|
|
me da un error al insertar un subtitulo en un avi
Multimedia
|
serpuc
|
7
|
2,447
|
24 Septiembre 2005, 14:03 pm
por Songoku
|
|
|
Error al insertar CD
Software
|
mabe
|
1
|
2,942
|
10 Abril 2007, 19:40 pm
por lipman
|
|
|
Error en al insertar
PHP
|
jagltoro
|
6
|
2,466
|
8 Abril 2012, 20:14 pm
por jagltoro
|
|
|
error al insertar en la base de datos
.NET (C#, VB.NET, ASP)
|
andaluz
|
6
|
5,230
|
26 Mayo 2012, 16:09 pm
por HdM
|
|