【发布时间】:2021-11-18 08:36:30
【问题描述】:
我在这段代码中遇到 1062 错误:
CREATE DATABASE IF NOT EXISTS `phppoll` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `phppoll`;
CREATE TABLE IF NOT EXISTS `polls` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` text NOT NULL,
`description` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
INSERT INTO `polls` (`id`, `title`, `description`) VALUES (1, 'What''s your favorite programming language?', '');
CREATE TABLE IF NOT EXISTS `poll_answers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`poll_id` int(11) NOT NULL,
`title` text NOT NULL,
`votes` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
INSERT INTO `poll_answers` (`id`, `poll_id`, `title`, `votes`) VALUES (1, 1, 'PHP', 0), (2, 1, 'Python', 0), (3, 1, 'C#', 0), (4, 1, 'Java', 0);
我不知道如何解决它。
【问题讨论】:
-
您的意思是
ERROR 1062 (23000): Duplicate entry '1' for key 'poll_answers.PRIMARY',这意味着您应该始终复制完整的错误消息。 -
为什么,你认为
DUPLICATE KEY可以存在? (提示:运行代码超过 1 次) -
顺便说一句:您遇到了 2 个这样的错误,还有一个:“ERROR 1062 (23000): Duplicate entry '1' for key 'polls.PRIMARY'”
-
除了
CREATE DATABASE,代码在db中运行良好fiddle:dbfiddle.uk/…. -
在执行
CREATE TABLE IF NOT EXISTS ....时,您应该在CREATE TABLE之前执行DROP TABLE IF EXISTS ...,以确保在没有记录的情况下重新创建表。