Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.1Mb
EPUB - 7.5Mb
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 として参照できます。


User Comments
  Posted by Chris Wilson on November 23, 2010
You can check the collation and other options of an existing database using the "SHOW CREATE DATABASE" statement.
Sign Up Login You must be logged in to post a comment.