En mi archivo main.js, la cadena es "hola, 0, 0, 0" (vacía en la segunda posición si la lee en la matriz) debe poder pasar NULL a la base de datos.
FYI: funcionará si la segunda posición es un 0 y no está vacía
Estoy tratando de dividir la cadena "," en var como se muestra a continuación.
var Val = req.body.string.split(","); var one = Val[0]; var two = Val[1]; var three = Val[2]; var four = Val[3]; var five = Val[4]; let sqlquery = "INSERT INTO TESTING (one, two, three, four, five) VALUES (?,?,?,?,?)"; let newrecord = [one, two, three, four, five]; db.query(sqlquery, newrecord, (err, result) => { if (err) { return console.error(err.message); } else res.send("Added in database"); y tengo este error
ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: valor entero incorrecto: '' para la columna 'tres' en la fila 1
La tabla que creé: CREAR PRUEBA DE TABLA (un VARCHAR (50), dos BOOLEAN, tres INT (4), cuatro INT (4), cinco BOOLEAN, CLAVE PRINCIPAL (nombre));
los campos son todos NULL
No hay incremento automático en la tabla anterior, hay otra tabla que creé exactamente de la misma manera pero con identificación de incremento automático pero aún arroja el mismo error
Como sabes que el parámetro three es un número, puedes escribir
var three = Val[2] || null;Supongo que luego ejecutas un comando como
db.query(sqlquery, [one, two, three, four, five]); Entonces, si Val[2] = "0" , obtienes three = "0" , y la base de datos acepta este valor de cadena para un 0 numérico.
Pero Val[2] = "" es un valor falso , por lo tanto, obtienes three = null , y es de esperar que la base de datos lo acepte para un valor NULL.