Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-04-2026
OSITOdePELUCHE OSITOdePELUCHE is offline
Miembro
 
Registrado: mar 2005
Posts: 14
Poder: 0
OSITOdePELUCHE Va por buen camino
Question error al agregar registro en mysql

buen dia, al agregar registro me marca error mi base de datos la tengo remota en mi dominio web con el servicio de mysql
al ejecutar este codigo:

Código Delphi [-]
                  dm.FDQuery1.close;
                  dm.FDQuery1.SQL.Text := 'INSERT INTO platillos (nombre, precio, disponible, categoriaid) VALUES (:val1, :val2, :val3, :val4)';
                  dm.FDQuery1.ParamByName('val1').AsString  :=  edit1.text;
                  dm.FDQuery1.ParamByName('val2').asfloat   :=  strtofloat(edit2.text);
                  dm.FDQuery1.ParamByName('val3').AsInteger :=  strtoint(edit3.text);
                  dm.FDQuery1.ParamByName('val4').AsInteger :=  strtoint(edit4.text);
                  dm.FDQuery1.ExecSQL;


arroja este error:

[firedac][phys][mysql] lost connection to MySQL server during query

a alguien le a pasado algo similar? o alguien que me de luz sobre el tema ?

Última edición por Neftali [Germán.Estévez] fecha: 09-04-2026 a las 08:39:41. Razón: Añadir Tags al mensaje
Responder Con Cita
  #2  
Antiguo 01-04-2026
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Pueden ser varias causas, por ejemplo:

Conversión con StrToFloat
Código Delphi [-]
dm.FDQuery1.ParamByName('val2').asfloat := strtofloat(edit2.text);
En España usamos coma, y MySQL espera punto.

Servidor MySQL remoto (timeout / hosting)
Como dices que está en hosting web, muy típico, el servidor corta conexiones si tardan demasiado, hay error en la query, paquete inválido...

Campo incompatible en MySQL
Revisa la tabla platillos, posibles problemas: precio es DECIMAL y le mandas mal formato, disponible no es INTEGER (ej: TINYINT o BOOL)o categoriaid no existe o FK inválida

Valores inválidos (muy común)
strtoint(edit3.text)
strtoint(edit4.text)
Si el usuario deja vacío entonces ocurre una excepción.

Conexión cerrada previamente
Antes del ExecSQL, revisa:
Código Delphi [-]
if not dm.FDConnection1.Connected then
dm.FDConnection1.Connected := True;

Prueba rápida:
Código Delphi [-]
dm.FDQuery1.SQL.Text :=
  'INSERT INTO platillos (nombre, precio, disponible, categoriaid) VALUES ("TEST", 10.5, 1, 1)';
dm.FDQuery1.ExecSQL;

Si esto funciona entonces el problema está en los datos (seguro el float).
Responder Con Cita
  #3  
Antiguo Hace 1 Semana
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 360
Poder: 3
navbuoy Va por buen camino
Lo MÁS sospechoso aquí

Por experiencia con Delphi + FireDAC + MySQL:

sospechosos principales:
StrToFloat() por configuración regional
conexión MySQL dormida
charset utf8 roto
reutilizar FDQuery1 para todo

Son los clásicos de toda la vida con FireDAC.

strtofloat() puede generar problemas raros dependiendo de configuración regional.

codigo relevante cuando vayas a hacer el strtofloat:

Código Delphi [-]
var fs: TFormatSettings;

fs := TFormatSettings.Create;
fs.DecimalSeparator := '.';

StrToFloat(edit2.Text, fs);
Responder Con Cita
  #4  
Antiguo Hace 1 Semana
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
Hola gente.

No coincido del todo con las respuestas anteriores, aunque posiblemente se deba a mi falta de experiencia específica con FireDAC.

El error lo está devolviendo MySQL, por lo que la instrucción al menos superó la etapa de parseo y llegó a ser procesada por el servidor.

Tengo un par de preguntas:
  • ¿Eres el único usuario ejecutando esa instrucción?
  • ¿Ese INSERT dispara triggers o algún proceso adicional?

Mi razonamiento va más por el lado de que FireDAC y la conexión estén funcionando correctamente, pero que la ejecución en el servidor esté demorando más de lo esperado, sea porque no es simplemente un insert, sino que se ejecuta otro tipo de código, o haya usuarios o procesos bloqueando la tabla.

Desconozco si FireDAC tiene alguna particularidad en su implementación que pueda provocar errores poco descriptivos o no normalizados, pero el mensaje en sí mismo significa que la conexión TCP entre cliente y servidor se perdió mientras había una consulta en ejecución.

Saludos.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo Hace 5 Días
Felinotronica Felinotronica is offline
Registrado
 
Registrado: abr 2024
Ubicación: Madrid
Posts: 9
Poder: 0
Felinotronica Va por buen camino
Hola, revisa las transacciones, tanto ADO como firedac permiten controlar las transacciones, asi como los errores y generar un rollback en caso de que algo salga mal. Esto es muy util en tablas relacionales, ya que algunos errores son por inconsistencia de datos. No se si es el caso, pero a mi con Horse en los API Rest me daba problemas por los controles active x en los endpoint, ya que han de estar inicializados: coInitialize y coUninitialize, esto pasa si en tu codigo hay algo como un end point que use active x o similares. Debes revisar el codigo y saber que usas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error al guardar un registro en mysql GUN10 Varios 13 03-03-2016 02:33:25
Agregar decimales a un registro HombreGordo Conexión con bases de datos 5 02-10-2008 02:42:38
Evitar el agregar registro en una DbCtrlGrid Manuel Varios 4 27-11-2006 19:22:45
Agregar campos de registro en la interface javitocarrasco Conexión con bases de datos 4 05-05-2006 13:14:37
problemas para agregar mas de un registro gabynuñez Conexión con bases de datos 0 08-08-2005 23:13:14


La franja horaria es GMT +2. Ahora son las 03:17:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi