Javascript Can';不写字;表'中的重复键#sql-3b3_69';

Javascript Can';不写字;表'中的重复键#sql-3b3_69';,javascript,mysql,node.js,knex.js,Javascript,Mysql,Node.js,Knex.js,我是knex和mysql的新手,我不知道为什么会出现这个错误 有人能帮忙吗 终端上显示错误 Error: alter table `users` add constraint `users_productid_foreign` foreign key (`productId`) references `products` (`id`) on update CASCADE on delete CASCADE - Can't write; duplicate key in table '#sql-3

我是knex和mysql的新手,我不知道为什么会出现这个错误

有人能帮忙吗

终端上显示错误

Error: alter table `users` add constraint `users_productid_foreign` foreign key (`productId`) references `products` (`id`) on update CASCADE on delete CASCADE - Can't write; duplicate key in table '#sql-3b3_69'
    
at Packet.asError (/home/banner/Desktop/udemyMax/miniShop/node_modules/mysql2/lib/packets/packet.js:712:17)
   
 at Query.execute (/home/banner/Desktop/udemyMax/miniShop/node_modules/mysql2/lib/commands/command.js:28:26)
   
 at Connection.handlePacket (/home/banner/Desktop/udemyMax/miniShop/node_modules/mysql2/lib/connection.js:425:32)
    
at PacketParser.onPacket (/home/banner/Desktop/udemyMax/miniShop/node_modules/mysql2/lib/connection.js:75:12)
    
at PacketParser.executeStart (/home/banner/Desktop/udemyMax/miniShop/node_modules/mysql2/lib/packet_parser.js:75:16)
   
 at Socket.<anonymous> (/home/banner/Desktop/udemyMax/miniShop/node_modules/mysql2/lib/connection.js:82:25)
    
at Socket.emit (events.js:315:20)
  
  at addChunk (_stream_readable.js:295:12)
    
at readableAddChunk (_stream_readable.js:271:9)
    
at Socket.Readable.push (_stream_readable.js:212:10)

 {
  code: 'ER_DUP_KEY',
  errno: 1022,
  sqlState: '23000',
  sqlMessage: "Can't write; duplicate key in table '#sql-3b3_69'"
}

您必须删除
dropForeign
行。您试图删除新创建的表中不存在的索引。这导致了问题。如果我删除了dropForeign,那么只有我得到了错误,我不知道为什么我需要先删除外键
const knex = require('knex')({
  client: 'mysql2',
  connection: {
    host: 'localhost',
    user: 'root',
    password: 'banner',
    database: 'miniShop'
  },
  pool: { min: 0, max: 7 }
})

const createUserTables = () => {
  knex.schema
    .createTableIfNotExists('users',table => {
      table.increments('userId').primary().notNullable()
      table.string('name').notNullable()
      table.string('emailId').notNullable()
      table.timestamp('created_at').defaultTo(knex.fn.now())
      table.timestamp('updated_at').defaultTo(knex.fn.now())
      // table.dropForeign("productId");
      table.integer('productId')
      table.foreign('productId').references('products.id').onDelete('CASCADE').onUpdate('CASCADE')
      })
      .then(() => {
        console.log('user table created...')
      })
      .catch((err) => {
        console.log(err)
      })
}

createUserTables()