Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


13.1.1 ALTER DATABASE 構文

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 を使用すると、データベースの全体的な特性を変更できます。これらの特性は、データベースディレクトリ内の db.opt ファイルに格納されます。ALTER DATABASE を使用するには、そのデータベースに対する ALTER 権限が必要です。ALTER SCHEMAALTER DATABASE のシノニムです。

最初の構文からはデータベース名を省略できます。その場合、このステートメントはデフォルトデータベースに適用されます。

各国語に関する特性

CHARACTER SET 句は、デフォルトのデータベース文字セットを変更します。COLLATE 句は、デフォルトのデータベース照合順序を変更します。セクション10.1「文字セットのサポート」では、文字セットと照合順序名について説明しています。

どのような文字セットと照合順序を使用できるかは、それぞれ SHOW CHARACTER SET および SHOW COLLATION ステートメントを使用して確認できます。詳細は、セクション13.7.5.4「SHOW CHARACTER SET 構文」およびセクション13.7.5.5「SHOW COLLATION 構文」を参照してください。

データベースのデフォルトの文字セットまたは照合順序を変更する場合、データベースのデフォルトを使用するストアドルーチンを削除して、新しいデフォルトを使用するように再作成する必要があります。(ストアドルーチンでは、文字セットまたは照合順序が明示的に指定されていない場合、文字データ型を伴う変数は、データベースのデフォルトを使用します。セクション13.1.15「CREATE PROCEDURE および CREATE FUNCTION 構文」を参照してください。)

MySQL 5.1 より古いバージョンからのアップグレード

UPGRADE DATA DIRECTORY NAME 句を含む構文は、データベースに関連付けられたディレクトリの名前を、データベース名をデータベースディレクトリ名にマップするための MySQL 5.1 で実装されたエンコーディングを使用するように更新します (セクション9.2.3「識別子とファイル名のマッピング」を参照してください)。この句は、次の条件の下で使用されることを目的にしています。

  • MySQL を古いバージョンから 5.1 以降にアップグレードすることを目的にしている。

  • データベースディレクトリ名にエンコーディングが必要な特殊文字が含まれている場合は、その名前を現在のエンコーディング形式に更新することを目的にしている。

  • このステートメントが (mysql_upgrade から呼び出された) mysqlcheck によって使用されている。

たとえば、MySQL 5.0 でのデータベース名が a-b-c である場合、その名前には - (ダッシュ) 文字のインスタンスが含まれています。MySQL 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 として参照できます。