Staging MySQL databases
You are working too hard.

Plan A -- RENAME TABLE

Assuming the production database is really readonly, you don't need FKs, just the indexes they generate.  (And you may not need all of them.)

So, before testing in Staging, turn off FK checks and drop all the FKs.  Then consider dropping any excess indexes.  Then test.

Since there is no RENAME DATABASE, you are stuck with a rather rapid series of

RENAME TABLE live.table1 TO old.table1,
             live.table2 TO old.table2,
             ...
             new.table1 TO live.table1,
             ... ;


Plan B -- 2 Instances

Better than that would be to have two instances of MySQL on the same server or (better yet) on different servers.  One for staging, one for production.  The flip-over does, however, require some way to redirect clients.  This may involve port number, proxy, IP address, etc.  Look at HAProxy and MaxScale for achieving the flip for you.  (They probably work for either case -- 2 instances on one server or 2 servers.)