MySQL - INSERT a MySQL desde PC remoto

 
Vista:

INSERT a MySQL desde PC remoto

Publicado por Carlos Torrecillas Ortega (3 intervenciones) el 04/05/2007 13:18:13
Hola,

estoy haciendo una aplicación distribuida y uso MySQL como BD. Estoy trabajando en C++ Builder 6.0 y tengo el problema de ejecutar sentencias insert desde otros ordenadores distintos de localhost: el problema que tengo es que al insertar una imagen, lo que hago es guardarla en un archivo temporal BMP y luego la cargo para guardarla con el comando LOAD_FILE(filename) que da MySQL. Todo me funciona correctamente si ejecuto desde localhost, pero cuando lo hago desde cualquier otro pc, la inserción se hace, pero deja el campo de la imagen a NULL. Por qué puede ser? El usuario lo tengo con todos los privilegios desde cualquier IP:

Esto es lo que hago:
grant all on DB to user@'%' with grant option;

Si alguien sabe por qué puede ser, me ayudaría muchísimo.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:INSERT a MySQL desde PC remoto

Publicado por julio (8 intervenciones) el 04/05/2007 21:34:36
Fija que tenes en la Tabla host? -tiene que estar dada de alta-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:INSERT a MySQL desde PC remoto

Publicado por Carlos Torrecillas (3 intervenciones) el 04/05/2007 22:35:53
EL prblema está en que al hacer LOAD_FILE(filename) se busca el fichero en el servidor. Tengo que averiguar la forma en la que se pueda pasar una imagen con parámetro en un insert.¿ Alguien sabe como hacerlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:INSERT a MySQL desde PC remoto

Publicado por kain (124 intervenciones) el 08/05/2007 09:31:46
mysql tiene campos blob en los cuales puedes guardar un stream,
entoces coje la imagen pasala a stream y guardala.

no se si esto te servira para C++ , aunque no sea asi te dara una pista

var
Stream:TMemoryStream;

Stream := TMemoryStream.Create;
Imagen.Picture.Graphic.SaveToStream(Stream);

sera algo parecido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:INSERT a MySQL desde PC remoto

Publicado por Carlos Torrecillas (3 intervenciones) el 08/05/2007 09:38:13
Hola,

ya está solucionado. No tiene mucho que ver con lo que has escrito, pero de todas formas gracias. El problema está en que las sentencias de LOAD_FILE cargan el fichero que se pasa como argumento desde el servidor. Por lo tanto, la carga no puede llevarse a cabo desde PC's remotos puesto que los mismos ficheros, seguramente, no se encontrarán en el servidor.

Existe entonces la capacidad de introducir datos como parámetros a través del objeto TQuery. Esa es la vía. A mi me pasaba que incluso hacíendolo así, se levantaba siempre una excepción de error y no se producía ni siquiera la inserción dejando el campo de imagen NULL. Y aunque al inicio de la aplicación ejecuto la sentencia "set max_allowed_packed = 160000000", no me funcionaba con el uso de parámetros. Lo que he hecho ha sido modificar el fichero my.ini y poner precisamente eso: max_allowed_packet = 16M, justo al final. Ya solo quedaba reiniciar el servidor y comprobar que efectivamente funcionaba la inserción de imágenes remota.

Saludos a todos y espero que os sirva a los que tenéis el mismo problema que yo, pues no he encontrado mucha información al respecto.

Carlos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar