Took my sweet time but i finally fixed my mysql problem – at some point when I set my mail server up i screwed up the debian-sys-maint account. This meant that the init script kept failing and apt-get upgrade wouldn’t work.
If anyone else hits a problem with their debian-sys-maint account, you can find its password in /etc/mysql/debian.cnf. You can then mysql -u root -p and do something like:
UPDATE users SET password=PASSWORD('password-from-debian.cnf') WHERE user='debian-sys-maint';