【发布时间】:2019-08-20 11:47:02
【问题描述】:
我正在从 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)
)
`;
提前谢谢你,如果有人知道我做错了什么,我会很高兴。
【问题讨论】:
-
creditcard INT(11) NOT NULL- 您是否提供了信用卡数据? -
@tpschmidt 显然不是,因为该列没有出现在列列表中:)
-
然后设置一个默认值
creditcard INT(11) DEFAULT 0 NOT NULL,否则NOT NULL没有任何意义,对吧? -
即使没有 NOT NULL 也不起作用。
-
你能把新建表的代码粘贴到这里吗