Hi Mark,
propably to re-produce this issue, here my workflow to install your component and to prepare it, only with your backend:
1. Backup of the site database (With MySQL tools).
2. Execute the EasyDiscuss installer.
From the EasyDiscuss backend side bar choose the item:
3. POSTS and delete all of them with the REMOVE(DELETE) button.
4. CATEGORIES and delete all of them with the REMOVE(DELETE) button.
5. POST TYPES and delete all of them with the REMOVE(DELETE) button.
6. TAGS and delete all of them with the REMOVE(DELETE) button.
7. Append a few new own Types, Tags and Categories.
After that from the frontend it was not able to add any topic due the described issue here.
Propably other customers uses your component with another workflow, how I did it with the described workflow from my first reply of your answer and since then it worked well.
So don't remove any contents from your startup installation, first append your own things and then remove the test entries.
I mean, that's a problem with empty tables in the startup situation, when a customer like me wants clear tables.
Often I saw applications with conflicts at table relations, but I am not sure and I have no time to make a code review.
EDIT: I forgot to tell you, that very first I played a bit with your test content, to understand your very fine and usable component and the behaviour was exactly that what I wanted.
The trouble began with the completly remove of your test content...