Seguimos con el aprendizaje de Java, si eres programador o estás aprendiendo. Sabrás lo que significa estar algún tiempo solucionando errores: minutos, horas, días o inclusive semanas; dándole solución a un error que no te deja seguir tu proyecto, bien hoy veremos un error muy común, cuando intentamos gestionar bases de datos desde una aplicación en Java, la descripción del error es la siguiente: Error java sql SQLException Field doesnt have a default value; al parecer es un error complejo, pero la verdad no lo es. Podemos arreglarlo de forma fácil y a continuación veremos cómo. Sin más empecemos.
Cómo solucionar el Error java sql SQLException Field doesnt have a default value en Java
Antes de corregir este error, debes tener presente lo siguiente.
Código fuente: Proyecto CRUD en Java MVC – con base de datos MySQL
Tu código debe ser completamente perfecto, y no lo digo desde el aspecto lógico. Si no desde el aspecto referencial, los nombres de archivos, columnas, tablas, bases de datos, registros. Deben ser referenciados de la forma en que le has llamado: No es lo mismo nombre a Nombre, o Apellido_1 a Apellido1.
🌟 ¡Visita Nuestra Tienda para Programadores! 🌟Descubre Códigos Fuente, Cursos, Software, Computadoras, Accesorios y Regalos Exclusivos. ¡Todo lo que necesitas para llevar tu programación al siguiente nivel!
La gran mayoría de errores en la programación, no son errores difíciles de arreglar, sino simples errores ortográficos del programador o mala digitación.
Solución java.sql.SQLException: Field doesnt have a default value
Según el párrafo anterior, básicamente lo que tienes en un error en tu código: «Claro eso ya lo sabemos«, pero el problema radica en que estás intentando guardar un registro, pero a una de las columnas no estás pasando un valor.
¿Ahora te preguntarás: Es obligatoria pasar un valor a todas las columnas de la tabla?
La respuesta es: Depende, todo está en la finalidad que quieres lograr en tu código o como va a funcionar tú programa.
Ya sabemos que hay una columna (o varias) en tu tabla que está esperando un valor y no se lo estás pasando, ¿Esto por que?
Muy sencillo, en tu base de datos, creaste la tabla con columnas estableciendo el atributo NOT NULL, por lo tanto. Si deseas guardar registros en esa tabla debes enviar (Obligatoriamente), un valor para estos campos, por eso es que salta el error: El campo no tiene un valor predeterminado.
¿Qué puedo hacer entonces?
Simple también, puedes hacer varias cosas:
- Verificar que en tu código por que no se está enviando el valor, puede que la variable que estás pasando a dicho campo, se encuentre vacía, gracias a una mala validación de los campos o también estás pasando la variable incorrecta.
- Modificar tu tabla en la base de datos y quitar en el campo o los campos de la tabla la propiedad: NOT NULL; esto lo logras fácilmente desde un cliente de MySQL o bien puedes hacerlo desde consola ejecutando el comando: ALTER TABLE tabla1 MODIFY campo VARCHAR(30);
- Establecer un valor por defecto al campo que no está recibiendo el valor, esta solución es muy poco usada, en vista que lo más normal es guardar valores enviados por el usuario.
- Manejar foreign keys, siempre que estés añadiendo un valor que tenga que ver con otra entidad, deberás relacionar estas tablas y obtener el valor del id de la tabla principal y almacenarla de forma foránea en la tabla hija.
Una recomendación de oro al momento de programar, es verificar paso a paso los valores que estás manejando; esto puedes hacerlo mostrando un simple mensaje tipo System.out.println, en la consola con las variables en cuestión.
Si manejas bases de datos desde tu proyecto, verifica los nombres y las propiedades de cada campo y entidades, recuerda que por una letra, símbolo o valor. El código mostrará error.