Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Windows Platform Restrictions

2.3.6 Windows 平台限制

在 Windows 平台上使用 MySQL 时,以下限制适用:

  • 进程内存

    在 Windows 32 位平台上,默认情况下无法在单个进程中使用超过 2GB 的 RAM,包括 MySQL。这是因为 Windows 32 位的物理地址限制为 4GB,默认情况下 Windows 将虚拟地址空间分配给内核(2GB)和用户/应用程序(2GB)。

    某些版本的 Windows 在启动时有一个设置,可以通过减少内核应用程序来启用更大的应用程序。或者,使用 64 位版本的 Windows 即可使用超过 2GB。

  • 文件系统别名

    使用 MyISAM 表时,无法在 Windows 链接到其他卷的数据文件,然后链接回主 MySQL datadir 位置。

    这项功能通常用于将数据和索引文件移到 RAID 或其他快速解决方案上。

  • 端口数量有限

    Windows 系统只有大约 4000 个端口可供客户端连接,关闭连接后,需要两到四分钟才能重新使用该端口。在客户端连接和断开连接的速率很高的情况下,可能会用完所有可用的端口,导致 MySQL 服务器看起来无响应,尽管它正在运行。其他应用程序也可能使用这些端口。

    有关此问题的更多信息,请参阅 https://support.microsoft.com/kb/196271

  • DATA DIRECTORYINDEX DIRECTORY

    在 Windows 上,DATA DIRECTORY 子句仅在 InnoDB 表上受支持,如 第 17.6.1.2 节“创建外部表” 所述。对于 MyISAM 和其他存储引擎,DATA DIRECTORYINDEX DIRECTORY 子句在 Windows 和其他平台上被忽略,因为 realpath() 调用不可用。

  • DROP DATABASE

    您不能删除当前会话正在使用的数据库。

  • 大小写不敏感的名称

    文件名在 Windows 上不区分大小写,因此 MySQL 数据库和表名也不区分大小写在 Windows 上。唯一的限制是数据库和表名必须在给定语句中使用相同的大小写。请参阅 第 11.2.3 节“标识符大小写敏感性”

  • 目录和文件名

    在 Windows 上,MySQL 服务器仅支持当前 ANSI 代码页兼容的目录和文件名。例如,在西方getLocale(代码页 1252)中,以下日本目录名不起作用:

    datadir="C:/私たちのプロジェクトのデータ"

    同样的限制也适用于 SQL 语句中引用的目录和文件名,例如 LOAD DATA 语句中的数据文件路径名。

  • 路径名分隔符 \

    在 Windows 中,路径名组件由 \ 字符分隔,该字符也是 MySQL 的转义字符。如果您使用 LOAD DATASELECT ... 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 文件。