Jesse,

>I need to rename a database. I read somewhere that I could simply stop the
>MySQL database server and rename the folder that contains the data, re-start
>MySQL, and I'm good-to-go. However, I tried this, and while it appears to
>have worked initially, when I try to access one of the tables in the
>database, I get the error, "fccamp.activities doesn't exist". When I rename
>the folder back to "fccamp_dbo", it works just fine.

It's more complicated than just renaming the directory. Here is what we wrote for it:

CREATE PROCEDURE RenameDatabase(
 IN oldname CHAR (64), IN newname CHAR(64)
)
BEGIN
 DECLARE sname CHAR(64) DEFAULT NULL;
 DECLARE rows INT DEFAULT 1;
 DECLARE total INT DEFAULT 0;
 CREATE DATABASE IF NOT EXISTS newname;
 REPEAT
   SELECT table_name INTO sname
   FROM information_schema.tables AS t
   WHERE t.table_schema = oldname
   LIMIT 1;
   SET rows = FOUND_ROWS();
   IF rows = 1 THEN
     SET @scmd = CONCAT( 'RENAME TABLE ', oldname, '.', sname,
                        ' TO ', newname, '.', sname );
     PREPARE cmd FROM @scmd;
     EXECUTE cmd;
     DEALLOCATE PREPARE cmd;
     SET total = total + 1;
   END IF;
 UNTIL rows = 0 END REPEAT;
 IF total > 0 THEN
   SET @scmd = CONCAT( "UPDATE mysql.db SET Db = '",
                       newname,
                       "' WHERE Db = '", oldname, "'" );
   PREPARE cmd FROM @scmd;
   EXECUTE cmd;
   SET @scmd = CONCAT( "UPDATE mysql.columns_priv SET Db = '",
                       newname,
                       "' WHERE Db = '", oldname, "'" );
   PREPARE cmd FROM @scmd;
   EXECUTE cmd;
   DEALLOCATE PREPARE cmd;
   FLUSH PRIVILEGES;
 END IF;
END;

PB
http://www.artfulsoftware.com

-----

Jesse Castleberry wrote:

I need to rename a database.  I read somewhere that I could simply stop the
MySQL database server and rename the folder that contains the data, re-start
MySQL, and I'm good-to-go.  However, I tried this, and while it appears to
have worked initially, when I try to access one of the tables in the
database, I get the error, "fccamp.activities doesn't exist".  When I rename
the folder back to "fccamp_dbo", it works just fine.

So, how do I rename a database correctly?  I'm using MySQL 5.0 in a Windows
XP environment.

Thanks,
Jesse




--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.362 / Virus Database: 267.12.8/161 - Release Date: 11/3/2005


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to