MYSQL在Windows平台上的限制
以下限制适用于在Windows平台上使用MySQL:
程序内存
在windows32位上,一个进程(包括MySQL)内默认使用超过2GB的内存是不可能的。这是因为windows 32位的物理地址限制是4GB,视窗内的默认设置是在内核(2GB)和用户/应用程序(2GB)之间拆分虚拟地址空间。
某些版本的Windows具有引导时间设置,通过减少内核应用程序来启用更大的应用程序。或者,要使用超过2GB,请使用64位版本的Windows。
文件系统别名
使用MyISAM表时,您不能在Windows中使用别名链接到另一个卷上的数据文件,然后链接回主MySQLdatadir位置。
该工具通常用于将数据和索引文件移动到RAID或其他快速解决方案。
端口数量限制
Windows系统有大约4,000个端口可供客户端连接,在端口上的连接关闭后,端口需要2到4分钟才能被重用。在客户端高速连接和断开服务器连接的情况下,在关闭的端口再次可用之前,所有可用端口都可能用完。如果发生这种情况,MySQL服务器似乎没有响应,即使它正在运行。端口也可能被机器上运行的其他应用程序使用,在这种情况下,MySQL可用的端口数量较少。
有关此问题的详细信息,请参见error WSAENOBUFS (10055) - Windows Client | Microsoft Learn。
数据目录和索引目录
MySQL 在不同存储引擎和操作系统上对 CREATE TABLE 语句中 DATA DIRECTORY 和 INDEX DIRECTORY 子句的支持情况,特别是指出了这些子句在 Windows 系统上的限制。
CREATE TABLE 语句的 DATA DIRECTORY 子句仅在 Windows 上支持 InnoDB 表。对于 MyISAM 及其他存储引擎,CREATE TABLE 的 DATA DIRECTORY 和 INDEX DIRECTORY 子句在 Windows 以及任何不支持功能完备的 realpath() 调用的平台上会被忽略。
删除数据库
不能删除另一个会话正在使用的数据库。
不区分大小写的名称
文件名在Windows上不区分大小写,因此MySQL数据库和表名在Windows上也不区分大小写。唯一的限制是数据库和表名必须在整个给定语句中使用相同的大小写来指定。
目录和文件名
在Windows上,MySQLServer仅支持与当前ANSI代码页兼容的目录和文件名。例如,以下日语目录名称在西方语言环境中不起作用(代码页1252):
datadir="C:/私たちのプロジェクトのデータ"
\
路径名分隔符
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认为它遇到了文件结束并中止程序。
当您尝试应用binary log时,可能会遇到特定的问题或限制,如下所示:
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文件。