Other way around.

Assuming the aplcation is expecting your table to be named 'db.table1'
 and your replacement is newdb.table1 you can do the following.

create a database for hold archives

CREATE olddb;

then

RENAME TABLE
db.table1 to olddb.table1, -- back up the current table
newdb.table1 to db.table1 -- rename the new table as the old one

You can have multiple oldtable TO newtable section, comma-separated.
MySQL guarantees that this is an atomic action which is to say that,
for all intents and purposed, all the table renames within a single
statement occur simultaneously or not at all.

I have swapped out quite larger database on the fly in production like
this with no reported problems.


 - michael







On Thu, Jun 3, 2010 at 5:01 PM, Tom Worster <f...@thefsb.org> wrote:
> i've a need to change the name of a database and haven't done this before in
> our live server.
>
> while the tables are myisam, i'm not inclined to rename the dirname of d1's
> datafiles because i'd rather not interrupt service for other databases and
> i'd prefer if the renaming would replicate.
>
> can i do it like this:
>
> in the application, kick users of d1 out
> create database d2
> foreach t in d1:
>    RENAME TABLE d1.t TO d2.t
> tell user to use d2
>
> ?
>
> tom
>
>
>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    http://lists.mysql.com/mysql?unsub=mdyk...@gmail.com
>
>



-- 
 - michael dykman
 - mdyk...@gmail.com

 May the Source be with you.

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql?unsub=arch...@jab.org

Reply via email to