我如何解决SequelizeDatabaseError:字段“ id”没有默认值?

时间:2019-06-26 17:09:14

标签: mysql node.js express model-view-controller sequelize.js

im在使用MVC节点的节点中的待办事项列表上工作,将pug和sequelize表示为ORM,而视图部分则用pug使其完成,因此当我启动我的应用程序时可以,但是当我尝试创建新的proyect时保护其消失,将其插入数据库,出现错误1364

原则上,这是一个添加到我的投资组合中的个人项目,我看到通过停用STRICT SQL模式可以找到一种解决方案,但我想知道是否还有另一种解决方案

model code Proyect.js

const Sequelize = require('sequelize');
//conect db
const db = require('../config/db');

const Proyects = db.define('proyects', {
    id: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true,
        allowNull: false
       },
    name: Sequelize.STRING,
    url: Sequelize.STRING
     });
module.exports = Proyects;

我希望使用该模型在表中创建一个寄存器,但是当我尝试实际错误时,下一个错误

Executing (default): CREATE TABLE IF NOT EXISTS `proyects` (`id` INTEGER NOT NULL auto_increment , `name` VARCHAR(255), `url` VARCHAR(255), `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing (default): SHOW INDEX FROM `proyects`
conected to db
Executing (default): INSERT INTO `proyects` (`id`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?);
{ SequelizeDatabaseError: Field 'id' doesn't have a default value
  code: 'ER_NO_DEFAULT_FOR_FIELD',
     errno: 1364,
     sqlState: 'HY000',
     sqlMessage: 'Field \'id\' doesn\'t have a default value',
     sql:
      'INSERT INTO `proyects` (`id`,`createdAt`,`updatedAt`) VALUES (DEFAULT,?,?);' },

1 个答案:

答案 0 :(得分:0)

据我了解,这是mysql数据库的问题。表中的“ id”字段被标记为非null,并且在插入值时您没有为“ id”字段提供任何值。

创建表时,可以避免在“ id”字段中允许空值或提供默认值(可以使用defaultValue标志)时遇到此错误。否则,您已经有了替代解决方案。