Windows プラットフォームでの MySQL の使用には、次の制限が適用されます:
-
プロセスメモリー
Windows 32 ビットプラットフォームでは、デフォルトで、MySQL などの単一プロセス内で 2G バイトを超える RAM を使用できません。 これは、Windows 32 ビットでの物理アドレスの制限が 4G バイトであり、Windows 内のデフォルト設定では、カーネル (2G バイト) とユーザー/アプリケーション (2G バイト) とに仮想アドレス空間を分割するためです。
Windows の一部のバージョンには、カーネルアプリケーションを減らすことによってより大きなアプリケーションに対応するブート時設定があります。 または、2G バイト以上を使用するには、64 ビットバージョンの Windows を使用します。
-
ファイルシステムエイリアス
MyISAM
テーブルの使用時には、Windows でエイリアスを使用して、別のボリューム上のデータファイルにリンクしててからメインの MySQLdatadir
の場所に戻るようにはリンクできません。この機能は、多くの場合、データおよびインデックスファイルを RAID またはその他の高速ソリューションに移動するために使用されます。
-
ポート数の制限
Windows システムにはクライアント接続のポートがおよそ 4,000 あり、1 つのポート接続が閉じるとそのポートを再度利用できるようになるまで 2 から 4 分かかります。 クライアントがサーバーとの接続と切断を高い頻度で繰り返す環境では、閉じたポートが再度利用できるようになる前に、利用できるポートがすべて使用されてしまうことがあります。 このようになると、MySQL Server は動作中であっても反応していないように見えます。 ポートは、マシンで実行されている他のアプリケーションでも使用できます。この場合、MySQL で使用可能なポートの数は少なくなります。
この問題の詳細は、http://support.microsoft.com/default.aspx?scid=kb;en-us;196271 を参照してください。
-
DATA DIRECTORY
およびINDEX DIRECTORY
セクション15.6.1.2「外部でのテーブルの作成」 で説明されているように、
CREATE TABLE
ステートメントのDATA DIRECTORY
句は、Windows forInnoDB
テーブルでのみサポートされます。MyISAM
およびその他のストレージエンジンの場合、CREATE TABLE
用のDATA DIRECTORY
およびINDEX DIRECTORY
句は、機能しないrealpath()
呼び出しを持つ Windows およびその他のプラットフォームでは無視されます。 -
DROP DATABASE
別のセッションで使用されているデータベースは削除できません。
-
大文字と小文字を区別しない名前
Windows ではファイル名の大文字と小文字は区別されないため、Windows では MySQL データベースとテーブル名の大文字と小文字も区別されません。 唯一の制約は、特定のステートメント全体で大文字と小文字を変更せずに、データベース名とテーブル名を指定する必要があるということだけです。 セクション9.2.3「識別子の大文字と小文字の区別」を参照してください。
-
ディレクトリ名とファイル名
Windows では、MySQL Server は現行の ANSI コードページと互換性のあるディレクトリ名とファイル名のみをサポートします。 たとえば、次の日本語のディレクトリ名は西ロケール (コードページ 1252) では機能しません:
datadir="C:/私たちのプロジェクトのデータ"
LOAD DATA
のデータファイルパス名など、SQL ステートメントで参照されるディレクトリ名およびファイル名にも同じ制限が適用されます。 -
\
(パス名の区切り文字)Windows でのパス名のコンポーネントは、
\
文字で区切られますが、これは MySQL のエスケープ文字でもあります。LOAD DATA
またはSELECT ... INTO OUTFILE
を使用している場合は、/
文字で Unix スタイルのファイル名を使用します:mysql> LOAD DATA INFILE 'C:/tmp/skr.txt' INTO TABLE skr; mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;
または、
\
文字を 2 重にする必要があります。mysql> LOAD DATA INFILE 'C:\\tmp\\skr.txt' INTO TABLE skr; mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;
-
パイプに関する問題
パイプは Windows のコマンド行プロンプトからでは確実には機能しません。 パイプに
^Z
/CHAR(24)
が含まれている場合、Windows はファイルの最後だと勘違いしてプログラムを中止します。これは主に、次のようにバイナリログを適用するときに問題になります。
C:\> mysqlbinlog binary_log_file | mysql --user=root
ログを適用するときに問題が発生し、その原因が
^Z
/CHAR(24)
文字によるものだと考えられる場合は、次の回避法を使用できます。C:\> mysqlbinlog binary_log_file --result-file=/tmp/bin.sql C:\> mysql --user=root --execute "source /tmp/bin.sql"
後者のコマンドを使用して、バイナリデータを含む SQL ファイルを確実に読み取ることもできます。