This is due to the fact that MySQL returns the SP, Function, Trigger definition with database name in it. Thus it looks like:
create procedure db.table.xxxxxx ( …. )
It is very difficult to correctly strip out the database name and execute it in a different context automatically.
We have had a discussion with MySQL AB people and they said that they address this issue in v5.x. As of now, all the three options will be enabled when you copy the database to a different database with the same name.