MySQL INSERT IGNORE/ON重复密钥更新未检测到重复

MySQL INSERT IGNORE/ON重复密钥更新未检测到重复,mysql,duplicates,ignore,Mysql,Duplicates,Ignore,我在这里遇到了一个问题,在谷歌搜索了两个小时的答案并测试了不同的想法后,我无法理解它。希望这对外面的人来说是一件不需要动脑筋的事 编辑:修复!请参阅下面的解决方案。 这是我的密码: 预期结果:创建一行,其中“page”值为“Hello”(“content”值为“This is the content.”)。第二次运行脚本时,不会创建其他行,因为已经有一行的“page”值为“Hello” 观察结果:每次运行脚本时,都会创建一个页面值为“Hello”的新行,这可能是因为这不是一个重复的键。为什么不买

我在这里遇到了一个问题,在谷歌搜索了两个小时的答案并测试了不同的想法后,我无法理解它。希望这对外面的人来说是一件不需要动脑筋的事

编辑:修复!请参阅下面的解决方案。

这是我的密码:

预期结果:创建一行,其中“page”值为“Hello”(“content”值为“This is the content.”)。第二次运行脚本时,不会创建其他行,因为已经有一行的“page”值为“Hello”

观察结果:每次运行脚本时,都会创建一个页面值为“Hello”的新行,这可能是因为这不是一个重复的键。为什么不买?我曾尝试创建一个带有自动递增ID字段和主键的表,但我认为这是导致问题的原因,所以我简化了它

(该代码是:)

预期结果:如果没有“页面”字段为“Hello”的行,则应在表中插入新行。一旦创建了该行,再次运行同一脚本不应产生新行

谢谢大家!

编辑:修复!请参阅下面的解决方案。

我的解决方案:

// Table needs a primary key to search for duplicates.
    mysql_query("CREATE TABLE IF NOT EXISTS pages(page varchar(255), content varchar(255), primary key (page))"); // Establish Table

您的
页面
字段必须是主键,或在其上具有唯一索引,以便在重复键更新时工作。尝试:

CREATE TABLE IF NOT EXISTS pages(page varchar(255), content varchar(255), primary key (page))

您的
页面
字段必须是主键,或在其上具有唯一索引,以便在重复键更新时工作。尝试:

CREATE TABLE IF NOT EXISTS pages(page varchar(255), content varchar(255), primary key (page))

正如质询所说。。。在复制键时。只有当insert违反表上的唯一约束时才会触发。如果没有键,数据库将不会扫描整个表以查看是否有重复项。

如查询所述。。。在复制键时。只有当insert违反表上的唯一约束时才会触发。如果没有键,数据库将不会扫描整个表以查看是否有重复项。

是的,就是这个!谢谢。是的,就是这个!非常感谢。
CREATE TABLE IF NOT EXISTS pages(page varchar(255), content varchar(255), primary key (page))