红薯不甜 2024-04-08 11:04 采纳率: 0%
浏览 8

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

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 },
}

同步到数据库后:

img


第一次插入数据正常:

img


img


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

img


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

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-08 11:04
    关注

    引自免费微信小程序:皆我百晓生

    首先,我理解您在询问如何解决 Sequelize 插入数据时遇到的 issue。这个问题主要涉及到两个部分:数据库同步以及数据插入。

    1. 数据库同步:
    Sequelize.sync({
        up: true,
        down: true,
        force: true,
    }).then(() => console.log('Database synchronization complete!'))
    .catch(err => console.error('Error occurred while synchronizing the database:', err));
    

    这个方法主要用于更新数据库的结构,它会尝试自动地更新所有的表格。如果您想强制执行同步操作,可以使用 force 参数。但是需要注意的是,这种方法可能会导致数据丢失。

    1. 数据插入:

    这是一个更复杂的问题,涉及到多行的插入语句和错误处理。为了简化这个问题,我们可以在数据库插入之前对所有可能的数据进行验证。例如:

    if (!['id', 'enid', 'name', 'update_time', 'index', 'pid', 'logo', 'view', 'intro'].includes(dbParams.id)) {
        console.error('Invalid ID provided!');
        return;
    }
    
    if (!['id', 'enid', 'name', 'update_time', 'index', 'pid', 'logo', 'view', 'intro'].includes(dbParams.enid)) {
        console.error('Invalid ENID provided!');
        return;
    }
    
    if (!['id', 'enid', 'name', 'update_time', 'index', 'pid', 'logo', 'view', 'intro'].includes(dbParams.name)) {
        console.error('Invalid NAME provided!');
        return;
    }
    
    // ... other validation checks
    
    if (!dbParams.enid || !dbParams.name || !dbParams.updateTime || !dbParams.index || !dbParams.pid || !dbParams.logo || !dbParams.view || !dbParams.intro) {
        console.error('Invalid data provided!');
        return;
    }
    

    这个方法会检查数据库参数中的每个字段是否为空。如果不为空,那么就可以将这些字段添加到结果集中。

    同时,对于插入的数据,您需要确保 id、enid、name、update_time、index、pid 和 logo 等字段都已经被正确设置并且是唯一的。

    最后,如果你正在使用 Node.js 和 Sequelize 进行开发,你应该已经对这两个工具有了一些基本的理解。如果有任何疑问或者需要进一步的帮助,请随时告诉我。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月8日

悬赏问题

  • ¥15 FutureWarning:不推荐使用空或全 NA 条目的 DataFrame 串联行为。怎么改呢?
  • ¥15 Chatgpt突然无法正常显示数学公式,如何解决?
  • ¥15 8位抢答器,按照课本写完代码,无法实现功能,如何解决?(关键词-数码管)
  • ¥15 一个用华为模拟器做的实验。
  • ¥28 opencv Cuda C++编译
  • ¥15 插入sim卡4g模组反复断连
  • ¥100 如何把 16bit Bayer 图像数据转换为 TIFF RGB
  • ¥15 进行基于用户的协同过滤推荐,使用准确率和召回率评价推荐模型的效果
  • ¥15 word脚注设置不起空格符号
  • ¥15 为什么apriori的运行时间会比fp growth的运行时间短呢