下列限制適用於在 Windows 平台上使用 MySQL
程序記憶體
在 Windows 32 位元平台上,預設情況下無法在單一程序 (包括 MySQL) 中使用超過 2GB 的 RAM。這是因為 Windows 32 位元上的實體位址限制為 4GB,而且 Windows 內的預設設定是在核心 (2GB) 和使用者/應用程式 (2GB) 之間分割虛擬位址空間。
某些版本的 Windows 具有開機時間設定,可透過減少核心應用程式來啟用較大的應用程式。或者,若要使用超過 2GB 的空間,請使用 64 位元版本的 Windows。
檔案系統別名
當使用
MyISAM
資料表時,您無法在 Windows 連結內使用別名,連結至另一個磁碟區上的資料檔案,然後連結回主要的 MySQLdatadir
位置。此功能通常用於將資料和索引檔案移至 RAID 或其他快速解決方案。
有限的連接埠數量
Windows 系統大約有 4,000 個連接埠可用於用戶端連線,而且在連接埠上的連線關閉後,需要兩到四分鐘才能再次使用該連接埠。在用戶端以高頻率連線和中斷與伺服器的連線的情況下,有可能在關閉的連接埠再次可用之前,所有可用的連接埠都已用盡。如果發生這種情況,即使 MySQL 伺服器正在執行,也會顯示為沒有回應。連接埠也可能被電腦上執行的其他應用程式使用,在這種情況下,MySQL 可用的連接埠數量會更少。
如需關於此問題的詳細資訊,請參閱 https://support.microsoft.com/kb/196271。
DATA DIRECTORY
和INDEX DIRECTORY
Windows 上僅針對
InnoDB
資料表支援CREATE TABLE
陳述式的DATA DIRECTORY
子句,如第 17.6.1.2 節「在外部建立資料表」中所述。對於MyISAM
和其他儲存引擎,在 Windows 和任何其他具有無法運作的realpath()
呼叫的平台上,會忽略CREATE TABLE
的DATA DIRECTORY
和INDEX DIRECTORY
子句。您無法捨棄另一個工作階段正在使用的資料庫。
不區分大小寫的名稱
檔案名稱在 Windows 上不區分大小寫,因此 MySQL 資料庫和資料表名稱在 Windows 上也不區分大小寫。唯一的限制是必須在給定的陳述式中以相同的大小寫指定資料庫和資料表名稱。請參閱第 11.2.3 節「識別項區分大小寫」。
目錄和檔案名稱
在 Windows 上,MySQL 伺服器僅支援與目前 ANSI 字碼頁相容的目錄和檔案名稱。例如,以下日文目錄名稱在西方地區設定 (字碼頁 1252) 中無法運作
datadir="C:/私たちのプロジェクトのデータ"
SQL 陳述式中參考的目錄和檔案名稱也適用相同的限制,例如
LOAD DATA
中的資料檔案路徑名稱。\
路徑名稱分隔符號字元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;
或者,您必須將
\
字元加倍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 檔案。