使用 mySQL 续写 UUID:无法设置默认值

问题描述

我一直在尝试将我的用户表的 id(主键)设置为 UUID。但是,我不断收到此错误:当我尝试为其播种时,字段“id”没有认值。

这是我目前在我的用户模型中所拥有的:

post('http://192.168.52.84/jasperserver...')

同样,这就是我的用户迁移文件中的内容

'use strict';
const {
  Model
} = require('sequelize');
module.exports = (sequelize,DataTypes) => {
  class Users extends Model {};
  
Users.init({
    id: {
      type: DataTypes.UUID,defaultValue: DataTypes.UUIDV4,allowNull: false,primaryKey: true
    },user_name: {
      type: DataTypes.STRING,validate: {
        notNull: {
          msg: 'Please add a name',},{
    sequelize,modelName: 'Users',});
  return Users;

我对 Sequelize 还很陌生,所以希望能得到一些关于出了什么问题的指导!

解决方法

所以,我想我意识到了这个问题:

出于某种原因,使用播种机文件播种不会自动生成我认为会自动生成的字段,因此我必须手动输入。

'use strict';

const { v4: uuidv4 } = require('uuid');

module.exports = {
  up: async (queryInterface,Sequelize) => {
     await queryInterface.bulkInsert('Users',[{
       id: uuidv4(),user_name: 'John Doe',"createdAt": new Date(),"updatedAt": new Date()
        }],{});
  },down: async (queryInterface,Sequelize) => {

    await queryInterface.bulkDelete('Users',null,{});

  }
};

最初,我一直试图在没有 id: uuidv4() 和 new Date() 的情况下播种(运行命令 npx sequelize-cli db:seed:all),这就是它不起作用的原因。>