首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mysql奇怪的“重复条目”错误

mysql奇怪的“重复条目”错误
EN

Stack Overflow用户
提问于 2011-06-11 19:41:08
回答 4查看 766关注 0票数 1

我有一个我不太明白的问题。我用Ruby解析一些提要,并将它们的内容保存在数据库中。我创建了一个“哈希”-column,它是每个帖子url的md5哈希。这个专栏是独一无二的,因为我不想重复发布任何内容。

它实际上工作得很好:

代码语言:javascript
运行
复制
Mysql::Error: Duplicate entry '28edb7c2b3cd074d226fc4ae37baedd7' for key 'hash'

但是脚本在这一点上停止了。我不明白这一点,我知道在PHP中使用INSERT总是很有效,所以如果有重复的条目,它会忽略它,然后继续。

有人能帮我吗?"INSERT IGNORE“会创建一个双重输入,还是会忽略错误消息并继续?

EN

回答 4

Stack Overflow用户

发布于 2011-06-11 19:45:32

听起来你的Ruby脚本需要一些exception handling.

票数 0
EN

Stack Overflow用户

发布于 2011-06-11 19:51:29

您可以重写查询,以便使用INSERT INTO

代码语言:javascript
运行
复制
REPLACE INTO ...

代码语言:javascript
运行
复制
INSERT INTO ... ON DUPLICATE KEY UPDATE

通过这种方式,尝试插入重复的键将更新现有记录,而不是出错。

有关详细信息,请参阅herehere

更新:

如果INSERT IGNORE遇到重复的密钥,它不会接触您现有的数据。The documentation说:

您可以使用REPLACE而不是INSERT来覆盖旧行。REPLACE是在处理包含复制旧行的唯一键值的新行时插入IGNORE的对应物:新行用于替换旧行,而不是被丢弃。

如果使用IGNORE关键字,则执行INSERT语句时发生的错误将被视为警告。例如,在不使用IGNORE的情况下,重复表中现有唯一索引或主键值的行将导致重复键错误,并且语句将中止。如果使用IGNORE,仍然不会插入行,但不会发出任何错误。

票数 0
EN

Stack Overflow用户

发布于 2011-06-13 03:16:15

在PHP中,如果MySQL返回一个错误,它通常不会终止PHP脚本。在我看来,Ruby并非如此。要么捕获异常并处理它,要么使用INSERT IGNORE,在这种情况下,MySQL返回警告而不是错误(除非被告知不要这样做)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6315688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档