当前位置: 首页 > 知识库问答 >
问题:

javascript - Sequelize 插入数据的时候没有自动自增id?

戚锦
2024-04-08

表结构:

{    id: { type: DataTypes.INTEGER.UNSIGNED, autoIncrement: true, primaryKey: true, allowNull: false },    enid: { type: DataTypes.STRING(100), unique: true, allowNull: false },    name: { type: DataTypes.STRING(100), unique: true, allowNull: false },    update_time: { type: DataTypes.DATE, defaultValue: DataTypes.NOW, allowNull: false },    index: { type: DataTypes.TINYINT.UNSIGNED, defaultValue: 0, allowNull: false },    pid: { type: DataTypes.INTEGER.UNSIGNED, allowNull: true },    logo: { type: DataTypes.STRING(200), allowNull: true },    view: { type: DataTypes.INTEGER.UNSIGNED, defaultValue: 0, allowNull: false },    intro: { type: DataTypes.STRING(1000), allowNull: false },}

同步到数据库后:
image.png

第一次插入数据正常:
image.png
image.png

插入第二条数据就会报错:
(数据: { enid: 'ddfffff', name: 'Ddfffff', index: 7, pid: null, intro: 'aaaaaaaaaaaaaaaaa' })
image.png

大佬们看看是哪里的问题??
第二次插入数据的时候如果添加id: 1,就能插入成功,否则失败!

共有1个答案

边明煦
2024-04-08

自增的数据是不需要专门声明的啊。我看了下我以前的sequelize项目:

// 严格模式'use strict';// 从sequelize模块选择性导入Modelconst { Model } = require('sequelize');// 模型导出module.exports = (sequelize, DataTypes) => {  class Prebook extends Model {    // 用于定义关联的辅助方法,不是Sequelize生命周期的一部分,但models/index会自动调用此方法    static associate(models) {      /**       * @外键       * @资源实体id resourceId       * @发起人id userId       */      // 仪器预约表-资源实体      Prebook.belongsTo(models.Resource, {        // 调用名称为“resource”        as: 'resource',        targetKey: 'id',        foreignKey: {          name: 'resourceId',          allowNull: false,        },      });      models.Resource.hasMany(Prebook, {        // hasMany的话,习惯的调用名称为复数形式        as: 'prebooks',        sourceKey: 'id',        foreignKey: {          name: 'resourceId',          allowNull: false,        },      });      // 仪器预约表-发起人      Prebook.belongsTo(models.User, {        // 调用名称为“user”        as: 'user',        targetKey: 'id',        foreignKey: {          name: 'userId',          allowNull: false,        },      });      models.User.hasMany(Prebook, {        // hasMany的话,习惯的调用名称为复数形式        as: 'prebooks',        sourceKey: 'id',        foreignKey: {          name: 'userId',          allowNull: false,        },      });    };  };  /**   * 仪器预约表   * @年月日时 time:DATE   * @预约有效性 validity:BOOLEAN   *   0:待审   *   1:有效   *    * @外键   * @资源实体id resourceId   * @发起人id userId   */  Prebook.init({    time: {      type: DataTypes.DATE,      allowNull: false,    },    validity: {      type: DataTypes.BOOLEAN,      allowNull: false,      defaultValue: 1,    },  }, {    sequelize,    // 模型名称为Prebook    modelName: 'Prebook',  });  return Prebook;};

就拿这张表来说,它是有默认的自增主键的,sequelize给的。不过在声明这张表的时候,自增主键是不写进去的。


另外,我后来用prisma了,简洁大方,效率高,还可以自己生成迁移,真的,回不来了。我用了prisma之后再也没用过sequelize。

 类似资料:
  • 问题内容: 我正在尝试将数据插入为主数据ID,该数据在MySQL数据库中具有一个字母数字值和两个数字值。该数据将自动递增生成数字,但字母数字值将是固定的。像D1,D2 .... D54,D55,D56等。这里,“ D”始终相同,但是数字将自动递增。有什么办法吗? 问题答案: 首先, 不建议这样做 ,就像其他评论一样,您可以动态生成此id值。 但是,尽管如此,至少有两种方法可以实现: 或多或少可靠的

  • 我正在使用java中的MySQL库执行一个查询。在我的数据库结构中,有一列名为(主键,非空且自动递增)。通常在每次插入查询中,我都将值设置为,在查询执行后,它会增加最后一个id,但在java中这样做会给我异常。 这就是代码: 如何使用自动增量ID执行查询?

  • 问题内容: 我创建了一个具有主键的表并启用了该表,如何使用MYSQL ? 这是我使用的查询,我尝试使用“”和“ 1”作为第一个值,但是它不起作用。 问题答案: 为了利用列的自动递增功能,在插入行时不要为该列提供值。数据库将为您提供一个值。

  • 我有一个表,我试图插入新行,但有一个列不会自动递增自己。有没有办法编写一个INSERT命令,根据列中的最高值自动递增该列?

  • 问题内容: 我正在尝试更改没有主键或auto_increment列的表。我知道如何添加主键列,但我想知道是否有可能自动将数据插入主键列(我已经在数据库中有500行,并希望为其提供ID,但我不想手动执行) 。有什么想法吗?非常感谢。 问题答案: 在我的测试中,添加列的语句可以正常工作: 在为测试目的而创建的临时表上,以上语句创建了该 列,并为该表中的每个现有行插入了自动递增值,从1开始。

  • firebaseDatabase=firebaseDatabase.getInstandatabaseReference=firebaseDatabase.getReference()Query Query=databaseReference.child(“ticket_detail”).orderbychild(“ticket_no”).limittoLast(1);AddListenerFor