如何向表中插入page_name重复但其他字段不同的记录
解决
page表重复page_name插入失败问题 问题根源
你遇到的报错是因为page表的page_name字段被设置了唯一约束(UNIQUE Index),数据库不允许该字段出现重复值;而IGNORE关键字的作用是忽略插入错误直接跳过这条记录,不会帮你插入新记录,所以达不到预期效果。
解决方案
方案1:删除page_name的唯一约束(推荐,若业务允许重复)
如果你的业务逻辑允许page_name存在重复值,直接删除该字段的唯一约束即可:
- 先查看表结构确认唯一索引名称:
SHOW CREATE TABLE page;
- 执行删除索引的SQL(替换
idx_page_name为实际查到的索引名):
ALTER TABLE page DROP INDEX idx_page_name;
方案2:设置复合唯一约束(若需部分字段组合唯一)
如果需要保证page_name和其他字段的组合唯一(比如page_name+page_id),可以替换原有的单一唯一约束为复合索引:
-- 先删除原有的page_name唯一索引 ALTER TABLE page DROP INDEX idx_page_name; -- 添加复合唯一索引 ALTER TABLE page ADD UNIQUE INDEX idx_page_name_page_id (page_name, page_id);
这样只要page_name和page_id的组合不重复,就能插入新记录。
代码修复提醒
你的PHP代码里存在语法错误:
$pageUrl = $val['slug'].
这里缺少分号或者后续拼接内容,会导致代码执行失败,需要修正为类似:
$pageUrl = $val['slug']; // 或者拼接其他内容,比如: // $pageUrl = $val['slug'] . '/some-path';
内容的提问来源于stack exchange,提问作者Atilla
相关产品推荐
相关产品推荐

