I recently moved some data between an XAMPP MySQL DB and a fully-fledged MySQL DB using Navicat’s (excellent!) Data Transfer tool. Unfortunately this caused a problem due to the versions of MySQL used for both being different, and so the table wasn’t created in the correct manner on the target server. This meant when it came to moving the data again I was getting the infamous error:
Column count of mysql.proc is wrong. Expected 20, found 16.
Curiously mysqlcheck declared that the table was fine, but undeterred I ran
root@ajax:~# mysql_fix_privilege_tables –password=yourpasswordhere
This script updates all the mysql privilege tables to be usable by
the current version of MySQL
root@ajax:~# service mysql restart
Followed by a restart, the problem was fixed