### 2.3.7 Windows 平台限制

[](<>)

以下限制适用于在 Windows 平台上使用 MySQL：

-   **过程记忆**

    在 Windows 32 位平台上，默认情况下不可能在单个进程中使用超过 2GB 的 RAM，包括 MySQL。这是因为 Windows 32 位的物理地址限制为 4GB，而 Windows 中的默认设置是在内核 (2GB) 和用户/应用程序 (2GB) 之间分割虚拟地址空间。

    某些版本的 Windows 具有启动时间设置，以通过减少内核应用程序来启用更大的应用程序。或者，要使用超过 2GB 的空间，请使用 64 位版本的 Windows。

-   **文件系统别名**

    使用时`MyISAM`表，您不能在 Windows 中使用别名链接到另一个卷上的数据文件，然后链接回主 MySQL[`数据目录`](server-system-variables.html#sysvar_datadir)地点。

    此工具通常用于将数据和索引文件移动到 RAID 或其他快速解决方案。

-   **端口数量有限**

    Windows 系统有大约 4,000 个端口可用于客户端连接，并且在端口上的连接关闭后，需要两到四分钟才能重新使用该端口。在客户端以高速率连接和断开服务器的情况下，所有可用端口可能在关闭的端口再次可用之前用完。如果发生这种情况，即使 MySQL 服务器正在运行，它也似乎没有响应。端口也可能被机器上运行的其他应用程序使用，在这种情况下，MySQL 可用的端口数量较少。

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

-   **`数据目录`和`索引目录`**

    这`数据目录`的条款[`创建表`](create-table.html)声明在 Windows 上受支持`InnoDB`仅限表格，如中所述[第 15.6.1.2 节，“在外部创建表”](innodb-create-table-external.html).为了`MyISAM`和其他存储引擎，`数据目录`和`索引目录`条款[`创建表`](create-table.html)在 Windows 和任何其他具有非功能性的平台上被忽略`真实路径（）`称呼。

-   **[`删除数据库`](drop-database.html)**

    您不能删除另一个会话正在使用的数据库。

-   **不区分大小写的名称**

    文件名在 Windows 上不区分大小写，因此 MySQL 数据库和表名在 Windows 上也不区分大小写。唯一的限制是在给定的语句中必须使用相同的大小写来指定数据库和表名。看[第 9.2.3 节，“标识符大小写敏感性”](identifier-case-sensitivity.html).

-   **目录和文件名**

    在 Windows 上，MySQL Server 仅支持与当前 ANSI 代码页兼容的目录和文件名。例如，以下日语目录名称在西方语言环境中不起作用（代码页 1252）：

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

    同样的限制适用于 SQL 语句中引用的目录和文件名，例如数据文件路径名[`加载数据`](load-data.html).

-   **这`\`路径名分隔符**

    Windows 中的路径名组件由`\`字符，也是 MySQL 中的转义字符。如果您正在使用[`加载数据`](load-data.html)要么[`选择...进入文件`](select-into.html), 使用 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`/`字符(24)`, Windows 认为它​​遇到了文件结尾并中止程序。

    这主要是当您尝试应用二进制日志时出现的问题，如下所示：

    ```
    C:\> mysqlbinlog binary_log_file | mysql --user=root
    ```

    如果您在应用日志时遇到问题并怀疑是因为`^Z`/`字符(24)`字符，您可以使用以下解决方法：

    ```
    C:\> mysqlbinlog binary_log_file --result-file=/tmp/bin.sql
    C:\> mysql --user=root --execute "source /tmp/bin.sql"
    ```

    后一个命令还可用于可靠地读取任何可能包含二进制数据的 SQL 文件。
