我正在将一些详细信息从Postman发送到mySQL数据库,并且它可以识别,但出现此错误:
code: 'ER_NO_DEFAULT_FOR_FIELD',
errno: 1364,
sqlMessage: 'Field \'creditcard\' doesn\'t have a default value',
我已经将mySQL模式设置为传统模式并删除了严格模式,重新连接到数据库重新启动了服务器,并且它再次引发了相同的错误。
这是代码的一部分:
try {
const createNewUser = 'INSERT INTO users (username, email, phonenumber, password, salt, created_at) VALUES (?,?,?,?,?,?)';
con.query(createNewUser, [username, email, phonenumber, passHash, salt, createAt], (err, results) => {
if (err) {
console.error(err);
}
console.log(results);
});
res.status(201).send({ success: true, message: 'New user was successfully created', data: {username, email, phonenumber, password} });
} catch (error) {
res.status(500).send({ success: false, message: 'Server error' });
}
await next;
}
const userCreateModel = `
CREATE TABLE IF NOT EXISTS users (
id INT(11) NOT NULL AUTO_INCREMENT,
username VARCHAR(45) NOT NULL,
email VARCHAR(45) NOT NULL,
phonenumber VARCHAR(45) NOT NULL,
password VARCHAR(255) NOT NULL,
creditcard INT(11) NOT NULL,
salt VARCHAR(255),
created_at DATE,
update_at DATE,
deleted_at DATE,
lastSignIn DATE,
PRIMARY key (id)
)
`;
在此先感谢您,如果有人对我在做什么错有任何线索,我将非常高兴。
答案 0 :(得分:2)
creditcard INT(11) NOT NULL,
在创建表格时,您提到它不应接受空值,并且在插入表格时错过了提供信用卡信息的功能
因此,要么更改表以接受空值,要么在插入时提供信用卡值
答案 1 :(得分:0)
您的信用卡字段被定义为“非空”,这就是为什么当您不对该字段提供任何值时收到此错误的原因。
答案 2 :(得分:0)
在您的try块中,您没有为信用卡声明字段