if you're running MySQL, you need to know a [link|http://sql-info.de/mysql/gotchas.html|few things]. Note, that this isn't a complete list.
Presumably you're developing programs A & B at the some time on the dev system. So moving 1 to staging/test should be coordinated with the other, likewise from staging to production/live. Stable together on staging should mean stable on live. But, as they say "there's no test like production." So you're right to be concerned, but I think the approach can be pretty tightly targetted: you know what the database changes are--you know what can be undone. Some database changes can wait until after you're satisfied with the application change. (Things like dropping tables/views or columns can wait until you're certain you're not going back. Adding tables and columns can be done before the production roll...)
how 'bout mysqldump instead of create table ..._bak.... ?