Sequelize 插入数据的时候没有自动自增id?-灵析社区

金刚老六

表结构: { 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](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241003/781b805c7006d0337b475a81273f686e.png) 第一次插入数据正常: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241003/7efec3d16617fd1d02f46397473b0c21.png) ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241003/d2c5e668a7784e2ce539a1b62da11024.png) 插入第二条数据就会报错: (数据: { enid: 'ddfffff', name: 'Ddfffff', index: 7, pid: null, intro: 'aaaaaaaaaaaaaaaaa' }) ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241003/dc3f88ab7d02ff578bd27d6811b95a46.png) 大佬们看看是哪里的问题?? 第二次插入数据的时候如果添加id: 1,就能插入成功,否则失败!

阅读量:184

点赞量:0

问AI
自增的数据是不需要专门声明的啊。我看了下我以前的sequelize项目: // 严格模式 'use strict'; // 从sequelize模块选择性导入Model const { 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。