Just tried
delete from portal_datasources where datasource_id in (select min(datasource_id) from portal_datasources group by name having count(name) > 1);
(in other words I assumed the earlier entry was useless)
That fixed the problem but doesn't explain how it got in there twice! I'm not sure - I dropped the datamodel each time before re-installing as I played with it over the weekend.
Don, if you think I should file a bug report, I'll do so - I just don't want to file something vague that can't ever be closed. I guess maybe just double checking the unique constraint on that table should clear things up - would at least cause it to blow up sooner rather than later!
FWIW - I was using OACS4.6 downloaded as of Mar 15 2003 give or take a day.