Realizando un proyecto personal me encontré con el siguiente problema en MySQL: «Packets larger than max_allowed_packet are not allowed». Se trataba de un proyecto donde agregaba imágenes a la base de datos mediante el tipo BLOB. El mensaje de advertencia viene a decir que la imagen es demasiado grande.
Encontré por Internet varias soluciones, pero ninguna me explicaba cómo solucionar este problema desde el código de java.
A continuación os explico cómo lo solucioné:
Seguiremos los siguientes pasos:
- Configuración base de datos:
- Si podemos crear la base de datos de nuevo, lo recomendable sería utilizar el mayor tamaño de archivos BLOB: «LONGBLOB».
- Esta web explica muy bien los diferentes tipos de BLOB que existen: Mysql.com
- Si podemos crear la base de datos de nuevo, lo recomendable sería utilizar el mayor tamaño de archivos BLOB: «LONGBLOB».
- Código en Java:
- Una vez hecho configurado correctamente la base de datos, escribiremos el siguiente código en java (sugerencia):
static String driverConexion_MySQL = "com.mysql.jdbc.Driver"; static String urlConexion_MySQL = "jdbc:mysql://localhost/database_mysql"; static String user_MySQL = "root"; static String password_MySQL = ""; public static Connection conectarBD() { try { //Cargamos driver MySQL Class.forName(driverConexion_MySQL); //Establecemos conexión a la BD MySQL conexionBD = DriverManager.getConnection( urlConexion_MySQL, user_MySQL, password_MySQL); //Aumentamos el tamaño permitido String aumentarTamanoBD = "SET GLOBAL max_allowed_packet=1073741824"; Statement sentenciaAumentarTamano = conexionBD.createStatement(); sentenciaAumentarTamano.executeUpdate(aumentarTamanoBD); sentenciaAumentarTamano.close(); } catch (Exception ex) { System.out.println("Error conexión BD:" + ex.getMessage()); } return conexionBD; }Espero que os sea útil
¡Que seáis felices!
Fuente:
- Stackoverflow.com
- Icon made by Freepik from www.flaticon.com