ALTER {DATABASE | SCHEMA} [db_name
]alter_specification
... ALTER {DATABASE | SCHEMA}db_name
UPGRADE DATA DIRECTORY NAMEalter_specification
: [DEFAULT] CHARACTER SET [=]charset_name
| [DEFAULT] COLLATE [=]collation_name
ALTER DATABASE
でデータベースの全体的な特徴を変更することができます。これらの特徴は、データベースディレクトリの
db.opt
ファイルに格納されています。ALTER
DATABASE
を利用するためには、データベース上の
ALTER
権限が必要です。ALTER
SCHEMA
は ALTER
DATABASE
の同義語です。
CHARACTER SET
節はデフォルトデータベースのキャラクタセットを変更します。COLLATE
節はデフォルトデータベースの照合を変更します。Character Set Supportはキャラクタセットと照合名を検討します。
SHOW CHARACTER
SET
ステートメントと
SHOW COLLATION
ステートメントを使用することで、それぞれ、どのようなキャラクタセットとの照合が使用できるかがわかります。詳しくは、項8.5.5.4. 「SHOW CHARACTER SET
構文」および項8.5.5.5. 「SHOW COLLATION
構文」を参照してください。
最初の構文から、データベース名を省略できます。その場合、このステートメントはデフォルトデータベースに適用されます。
UPGRADE DATA DIRECTORY NAME
節を含む構文は、MySQL 5.1.23
で追加されました。これは、データベース名をデータベースディレクトリ名にマッピングするための
MySQL 5.1
で実装されたエンコーディングを使用するように、データベースに関連付けられたディレクトリの名前を更新します
(項5.2.3. 「識別子からファイル名へのマッピング」
を参照)。この節は、次の条件の下で使用されます。
MySQL を旧バージョンから 5.1 以降にアップグレードする場合を対象にしています。
名前にエンコーディングが必要な特殊な文字が含まれている場合に、データベースディレクトリ名を現在のコード化形式に更新することを目的にしています。
このステートメントは、mysqlcheck で使用されます (mysql_upgrade によって呼び出されたとき)。
たとえば、MySQL 5.0 のデータベースの名前が
a-b-c
の場合、その名前には
'-
'
文字のインスタンスが含まれています。5.0
では、データベースディレクトリにも
a-b-c
という名前が付けられますが、必ずしもすべてのファイルシステムで安全とはいえません。MySQL
5.1
以降では、ファイルシステムに依存しないディレクトリ名を生成するために、同じデータベース名が
a@002db@002dc
としてエンコードされます。
MySQL インストールが旧バージョンから MySQL 5.1
以降にアップグレードされると、サーバーでは
a-b-c
などの古い形式の名前が
#mysql50#a-b-c
として表示されるため、#mysql50#
の接頭辞を付けて名前を参照する必要があります。この場合は、UPGRADE
DATA DIRECTORY NAME
を使用して、データベースディレクトリ名を現在のコード化形式に再エンコードするようサーバーに明示的に指示します。
ALTER DATABASE `#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME;
このステートメントを実行したあと、特有の
#mysql50#
の接頭辞を使用することなくデータベースを
a-b-c
として参照できます。