1

所以我有一个脚本,它一次获取大约 100 个项目的数据,并使用如下命令将它们插入 MySQL 数据库:

INSERT IGNORE INTO beer(name, type, alcohol_by_volume, description, image_url) VALUES('Bourbon Barrel Porter', 2, '9.1', '', '')

我运行了一次脚本,它在数据库中填充了 100 个条目。但是,我使用相同的 SQL 语法再次运行脚本,收集所有新数据(即没有重复数据),但数据库没有反映任何新条目——这与我在脚本的第一次迭代中插入的 100 个条目相同.

我记录了查询,并且可以确认查询正在使用新数据发出请求,因此脚本不收集新数据不是问题。

名称字段是唯一字段,但没有其他字段。我错过了什么吗?

4

1 回答 1

0

如果使用IGNORE关键字,则执行语句时发生的错误将INSERT被视为警告。例如,如果没有 IGNORE,复制表中现有UNIQUE索引或PRIMARY KEY值的行会导致重复键错误并且语句被中止。使用IGNORE,该行仍然没有插入,但没有发出错误。

如果没有主键,则不能忽略重复键。你应该总是设置一个主键,所以请这样做 - 如果你想有额外的不应该重复的列,请将它们设置为“ unique”。

于 2013-05-06T04:18:23.103 回答