Ah ha! I've found the problem. I was using a config.inc file which used the multiple servers option, as described in FAQ92. This had a value for $servers[0]['dbprefix'] but nothing for $GLOBALS['dbprefix'], so I didn't spot that dbprefix was being added in twice.
The solution is to remove the following line
$dbname = $GLOBALS['dbprefix'] .$dbname;
from the ddl_showColumns() and ddl_showTables() methods inside your copy of the 'dml.mysql[i].class.inc' file.
An updated copy of 'dml.mysqli.class.inc' is attached.