Javascript Can';不写字;表'中的重复键#sql-3b3_69';
我是knex和mysql的新手,我不知道为什么会出现这个错误 有人能帮忙吗 终端上显示错误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
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()