OK,
after spending a solid day on this I managed to solve it.
After uninstalling and reinstalling modx a dozen times, importing and dumping data via phpadmin about the same number of times and staring at the config ini file for ages clues began to emerge.
I noticed that my newly imported files had a different sub prefix. EG [newly imported]_site_content vs [existing]_site_content
After trying a few edits in phpadmin which worked but would take far too long for the whole db, I wondered: "Where else did I just see a "db prefix" parameter.
Back to the config file. Sure enough there it was, so I changed it to the new prefix and everything now works.
Not sure if this is the correct way to do it though.
Obviously when Modx gets installed a default db prefix is set by the user.
However, when you export out of a desktop or dev server db, it gives the tables in the file a different prefix.
So you must remember to change that setting after exporting to a new server.
I’ve probably come about this butt backwards, so if any more knowledgeable types out there want to comment on how I should have done it, then please do.