首页 > 解决方案 > 字段“SomeField”没有默认值

问题描述

我正在从 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)
  )
`;

提前谢谢你,如果有人知道我做错了什么,我会很高兴。

标签: mysqlnode.jsexpress

解决方案


creditcard INT(11) NOT NULL,

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

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


推荐阅读