运行MySQL创建phppoll数据库代码出现1062错误如何解决
错误原因
MySQL 1062错误为主键/唯一键重复冲突,你当前报错的根源是:
- 建表语句用了
IF NOT EXISTS判断,脚本重复执行时不会覆盖已经存在的表 - 两条INSERT语句强制写死了自增主键
id的值,第一次执行后对应id的记录已经存在,第二次执行插入相同id就会触发冲突
修复方案
你可以根据自己的使用场景选对应方案:
- 场景1:首次部署,不需要保留现有数据
先执行删库语句清空历史数据,再跑原脚本即可:DROP DATABASE IF EXISTS `phppoll`; - 场景2:需要保留现有数据,不需要固定投票条目id
直接删除INSERT语句里的主键id字段,利用自增属性让数据库自动分配id即可,修改后的INSERT语句如下:-- 插入投票主表 INSERT INTO `polls` (`title`, `description`) VALUES ('What''s your favorite programming language?', ''); -- 插入投票选项 INSERT INTO `poll_answers` (`poll_id`, `title`, `votes`) VALUES (1, 'PHP', 0), (1, 'Python', 0), (1, 'C#', 0), (1, 'Java', 0); - 场景3:需要固定投票条目id,同时避免重复插入报错
给INSERT语句加IGNORE关键字,重复id时会自动跳过插入不报错:INSERT IGNORE INTO `polls` (`id`, `title`, `description`) VALUES (1, 'What''s your favorite programming language?', ''); INSERT IGNORE 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);
内容的提问来源于stack exchange,提问作者Manny
相关产品推荐
相关产品推荐

