Estoy tratando de agregar una imagen a un campo BLOB en una base de datos mysql. La imagen va a tener menos de 100 kb de tamaño. Sin embargo, estoy teniendo problemas y me preguntaba ¿cuál sería una mejor forma de agregar estos datos a la base de datos?Agregar imagen a una base de datos en Java
com.mysql.jdbc.MysqlDataTruncation: truncamiento de datos: Los datos demasiado largo para la columna 'Datos' en la fila 1
PreparedStatement addImage = conn.prepareStatement("INSERT INTO Images (Width, Height, Data) VALUES (?,?,?)",Statement.RETURN_GENERATED_KEYS);
A continuación se muestra el método que estoy usando para agregar la imagen en la base de datos.
public int addImage(Image image) throws SQLException, IllegalArgumentException
{
this.addImage.clearParameters();
byte[] imageData = ImageConverter.convertToBytes(image);
int width = image.getWidth(null);
int height = image.getHeight(null);
if (width == -1 || height == -1)
{
throw new IllegalArgumentException("You must load the image first.");
}
this.addImage.setInt(1, width);
this.addImage.setInt(2, height);
this.addImage.setBytes(3, imageData);
this.addImage.executeUpdate();
ResultSet rs = this.addImage.getGeneratedKeys();
rs.next();
return rs.getInt(1);
}
después de cambiar el tipo de campo de datos a un MEDIUMBLOB y el intento de colocar un archivo de imagen de 140kb en la base de datos que he recibido un error diferente.
com.mysql.jdbc.PacketTooBigException: paquete de la consulta es demasiado grande
es el problema de la forma en que estoy tratando de agregar los datos a la base de datos. ¿Debería tomar un enfoque diferente? Si es así, ¿qué camino?
Puede valer la pena publicar la definición de la tabla a la que intenta agregarle la imagen. –