以下限制適用於在 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
如 第 17.6.1.2 節,「外部建立資料表」所述,Windows 上僅針對
InnoDB
資料表支援CREATE TABLE
陳述式的DATA DIRECTORY
子句。對於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 檔案。