Последовательное дублирование значения ключа нарушает уникальное ограничение - PullRequest
0 голосов
/ 26 октября 2018

Я работаю над nodeJs и postgresql.Я сталкиваюсь с ошибкой

дублирование значения ключа нарушает уникальное ограничение \ "AuthoriseDates_pkey \" Ключ (id) = (371) уже существует.

Я установил столбецидентификатор autoIncrement: true, не понимаю, почему это происходит, максимальный идентификатор столбцов составляет 647, но теперь я не могу вставить запись в эту таблицу.

вот код переноса:

module.exports = {
  up(queryInterface, Sequelize) {
    return queryInterface.createTable('AuthoriseDates', {
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER,
      },
      userId: {
        type: Sequelize.INTEGER,
        references: { model: 'Users', key: 'id' },
      },
      lastAuthorise: {
        type: Sequelize.DATE,
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE,
        defaultValue: Sequelize.fn('NOW'),
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE,
        defaultValue: Sequelize.fn('NOW'),
      },
    });
  },
  down(queryInterface) {
    return queryInterface.dropTable('AuthoriseDates');
  },
};

вот модели:

module.exports = (sequelize, DataTypes) => {
  const authoriseDate = sequelize.define('AuthoriseDate', {
    id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true },
    userId: DataTypes.INTEGER,
    lastAuthorise: DataTypes.DATE,
  });

  authoriseDate.associate = (models) => {
    // associations can be defined here
    authoriseDate.belongsTo(models.User, { foreignKey: 'userId', });
  };

  return authoriseDate;
};

вот код вставки:

models.AuthoriseDate.create({
          userId: userId,
          lastAuthorise: new Date().toISOString(),
        }).then((create) => {}).catch((error) => {
          loggerServer.err('error ', error);
          loggerServer.log('debug', { error: error });
          return res.status(500).json(result);
        });
...