字段“ SomeField”没有默认值

时间:2019-08-20 11:47:02

标签: mysql node.js express

我正在将一些详细信息从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)
  )
`;

在此先感谢您,如果有人对我在做什么错有任何线索,我将非常高兴。

3 个答案:

答案 0 :(得分:2)

creditcard INT(11) NOT NULL,

在创建表格时,您提到它不应接受空值,并且在插入表格时错过了提供信用卡信息的功能

因此,要么更改表以接受空值,要么在插入时提供信用卡值

答案 1 :(得分:0)

您的信用卡字段被定义为“非空”,这就是为什么当您不对该字段提供任何值时收到此错误的原因。

答案 2 :(得分:0)

在您的try块中,您没有为信用卡声明字段