OK, se eu simplificar isso para:
select * from plugin_store_rows WHERE plugin_name = 'discourse-data-explorer' AND type_name = 'JSON' AND (replace(key, 'q:',''))::integer < 0;
Isso retorna duas linhas idênticas (exceto pelo ‘id’).
Acho que devo ser corajoso e excluir uma!
PS: Feito, excluí o registro mais recente - recriando
(Usei DELETE from plugin_store_rows WHERE id = $$$o_id_dos_registros_duplicados$$$;)
A MIGRAÇÃO AGORA FUNCIONOU!
Obrigado pelo empurrão @Falco