valor una truncar truncamiento que pérdida puede pudo producirse posible matematicas inserción flujo error ejemplos decimales debido datos convertir conversión columna java mysql jdbc

java - una - Truncamiento de datos: datos demasiado largos para la columna ''logo'' en la fila 1



truncar decimales en excel (3)

Está intentando insertar datos que son más grandes que los permitidos para el logo la columna.

Use los siguientes tipos de datos según su necesidad

TINYBLOB : maximum length of 255 bytes BLOB : maximum length of 65,535 bytes MEDIUMBLOB : maximum length of 16,777,215 bytes LONGBLOB : maximum length of 4,294,967,295 bytes

Use LONGBLOB para evitar esta excepción.

Estoy tratando de insertar una foto en una columna BLOB de una tabla MySQL, y recibo una excepción:

Data too long for column ''logo'' at row 1.

Aquí está el JDBC:

int idRestaurant = 42; String restoname= "test"; String restostatus= "test"; InputStream fileContent = getUploadedFile(); int fileSize = getUploadedFileSize(); Class.forName("com.mysql.jdbc.Driver"); try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/resto" , "root" , "" )) { PreparedStatement ps = conn.prepareStatement("insert into restaurants (idRestaurant, restaurantName, status, logo) values(?,?,?,?)"); ps.setInt(1, idRestaurant); ps.setString(2, restoname); ps.setString(3, restostatus); ps.setBinaryStream(4, fileContent, fileSize); ps.executeUpdate(); conn.commit(); }

¿Cómo resuelvo este problema?


La siguiente solución funcionó para mí. Al conectarse a la base de datos, especifique que los datos deben truncarse si son demasiado largos (jdbcCompliantTruncation). Mi enlace se ve así:

jdbc:mysql://SERVER:PORT_NO/SCHEMA?sessionVariables=sql_mode=''NO_ENGINE_SUBSTITUTION''&jdbcCompliantTruncation=false

Si aumenta el tamaño de las cadenas, puede enfrentar el mismo problema en el futuro si la cadena que está intentando almacenar en la base de datos es más larga que el nuevo tamaño.

EDITAR: STRICT_TRANS_TABLES debe eliminarse de sql_mode también.


Use el tipo de datos LONGBLOB lugar de BLOB en su tabla de base de datos.