When developing in never-ending iterations on a webproduct which is already in production, adding/laltering columns can have disastrous results.
How to deal with it
Many things can be solved in many ways. So, many people would suggest something like better testing, better deployment strategies. However, I might have another interesting suggestion: keep away from altering/adding columns.
Possible Solution: a yaml column
YAML is an awesome text markup which allows structures defined by text.
So, why not add a 'yaml' column on certain tables which you expect to have more 'wild' columns? You can even automate yaml-encoding/decoding upon often expected actions (Database CRUD operations).
its human readable
you can still search on it in Mysql using LIKE "%family: Gale%"
you just deal with associative arrays
The sutra PHP framework is a great example who exploits this feature: as soon as the databaselayer sees an 'yaml'-column, it automatically encodes/decodes it. The result is a very comfortable way of programming just with associative arrays, no need to worry about yaml-conversions.