ALTER {DATABASE | SCHEMA} [db_name]
alter_specification ...
ALTER {DATABASE | SCHEMA} db_name
UPGRADE DATA DIRECTORY NAME
alter_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
ALTER DATABASE enables you to change the
overall characteristics of a database. These characteristics are
stored in the db.opt file in the database
directory. To use ALTER DATABASE, you need the
ALTER privilege on the database. ALTER
SCHEMA is a synonym for ALTER
DATABASE.
The CHARACTER SET clause changes the default
database character set. The COLLATE clause
changes the default database collation. Section 9.1, “Character Set Support”,
discusses character set and collation names.
You can see what character sets and collations are available
using, respectively, the SHOW CHARACTER SET and
SHOW COLLATION statements. See
Section 12.5.6.2, “SHOW CHARACTER SET Syntax”, and
Section 12.5.6.3, “SHOW COLLATION Syntax”, for more information.
The database name can be omitted from the first syntax, in which case the statement applies to the default database.
The syntax that includes the UPGRADE DATA DIRECTORY
NAME clause updates the name of the directory associated
with the database to use the encoding implemented in MySQL 5.1 for
mapping database names to database directory names (see
Section 8.2.3, “Mapping of Identifiers to Filenames”). This clause is for use
under these conditions:
It is intended when upgrading MySQL to 5.1 or later from older versions.
It is intended to update a database directory name to the current encoding format if the name contains special characters that need encoding.
The statement is used by mysqlcheck (as invoked by mysql_upgrade).
For example,if a database in MySQL 5.0 has a name of
a-b-c, the name contains instance of the
‘-’ character. In 5.0, the database
directory is also named a-b-c, which is not
necessarily safe for all filesystems. In MySQL 5.1 and up, the
same database name is encoded as a@002db@002dc
to produce a filesystem-neutral directory name.
When a MySQL installation is upgraded to MySQL 5.1 or later from
an older version,the server displays a name such as
a-b-c (which is in the old format) as
#mysql50#a-b-c, and you must refer to the name
using the #mysql50# prefix. Use
UPGRADE DATA DIRECTORY NAME in this case to
explicitly tell the server to re-encode the database directory
name to the current encoding format:
ALTER DATABASE `#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME;
After executing this statement, you can refer to the database as
a-b-c without the special
#mysql50# prefix.
MySQL Enterprise. In a production environment, alteration of a database is not a common occurrence and may indicate a security breach. Advisors provided as part of the MySQL Enterprise Monitor automatically alert you when data definition statements are issued. For more information, see advisors.html.

User Comments
Add your own comment.