所以我有一个脚本,一次获取大约100个项目的数据,并使用如下命令将它们插入MySQL数据库:
INSERT IGNORE INTO beer(name, type, alcohol_by_volume, description, image_url) VALUES('Bourbon Barrel Porter', 2, '9.1', '', '')
我运行了一次脚本,并在数据库中填入了100个条目。但是,我使用相同的SQL语法再次运行脚本,收集所有新数据(即没有重复项),但数据库没有反映任何新条目 - 它是我在脚本的第一次迭代中插入的相同的100个条目。
我记录了查询,我可以确认查询是否使用新数据发出请求,因此脚本不收集新数据不是问题。
名称字段是唯一字段,但没有其他字段。我错过了什么吗?
答案 0 :(得分:0)
如果使用IGNORE
关键字,则执行INSERT
语句时发生的错误将被视为警告。例如,如果没有IGNORE,则复制表中现有UNIQUE
索引或PRIMARY KEY
值的行会导致重复键错误,并且语句将中止。使用IGNORE
时,仍未插入行,但未发出错误。
如果没有主键,则无法忽略重复键。你应该总是设置一个主键,所以请这样做 - 如果你想要有不应重复的其他列,请将它们设置为“unique
”。