Why is it that when I drop a field in table it says `#1050 - Table already exist`
Check out this post by Aleksandr Kuzminsky who not only provides a solution, but also (and maybe more importantly) an explanation of what's going on. Kuzminsky is a former Percona employee (Percona is a big hitter in the MySQL ecosphere) and a contributor to open source MySQL projects on Launchpad.

Basically, what happens is this

When you run an alter table, MySQL creates a temporary table with the new structure. The name of the new table is (something like) #sql-ib712. 

It appears that MySQL doesn't choose very random names for these temporary tables. The problem arises when there's a crash in the middle of the ALTER TABLE process and the dictionary ends up with an orphaned table. Which wouldn't be a problem, except that MySQL (due to the non-random nature of temp table naming) has a good chance of giving the same name to a subsequent temporary table.

Obviously, Kuzminsky goes into a bit more detail, and provides a script to help fix your database.