在您的数据库控制台中运行此查询:SELECT *, COUNT(*) as n FROM table_name group by column_name HAVING n>1
修复重复的行
重新运行迁移
恕我直言,您应该手动编辑重复数据,以确保数据已正确修复。
更新:
OP 没有提到他/她正在使用 Postgres,我为 MySQL 提供了一个解决方案。
对于 Postgres:
基于此解决方案:使用 PostgreSQL 查找重复行
运行此查询:
SELECT * FROM (
SELECT id,
ROW_NUMBER() OVER(PARTITION BY merchant_Id, url ORDER BY id asc) AS Row
FROM Photos
) dups
WHERE
dups.Row > 1
更多解释:
为了让您执行迁移并向列添加唯一约束,您需要先修复当前数据。通常,没有自动步骤来确保您不会得到不正确的数据。
这就是为什么您需要手动查找重复行并修复它的原因。给定的查询将显示哪些行是重复的。因此,从那里修复数据,您应该能够运行迁移。
摩尔更新:
重复的行不会被标记。例如,如果你得到这样的结果:
ID ROW
235 2
236 3
2 2
3 3
您应该选择具有 的行,id=235
然后选择具有与 相同列值的每一行id=235
。从那里,你会看到每id
一个都是重复的id=235
。然后,只需一个一个地编辑它们。