從Noinstall Zip Archive中安裝MySQL
正在從Noinstall軟件包安裝MySQL的用戶可以使用這個說明來手動安裝MySQL。從Zip archive 中安裝MySQL的 步驟如下:
1 在指定的安裝目錄下解壓軟件包。 2 制造選擇文件。 3 選擇MySQL服務類型。 4 開始MySQL服務。 5 保護默認賬戶。
解壓安裝軟件包
為了手工安裝MySQL,需要按以下步驟進行:
1 如果你需要對以前的版本更新,請參考在更新步驟剛開始時的文章 “Upgrading MySQL on Windows”。
2 如果你正在使用基於Windows NT的操作系統例如Windows NT, Windows 2000, Windows XP或者Windows Server 2003,必須保證你作為擁有管理員特權的用戶登錄該系統。
3 選擇一個安裝位置。傳統的MySQL服務器安裝在 C:\mysql,而MySQL安裝向導將 MySQL 安裝到 C:\Program Files\MySQL。如果不將 MySQL 安裝到 C:\mysql下,你必須在啟動或者在選擇文件中具體指出安裝路徑。
4 選用壓縮工具將安裝壓縮軟件解壓縮至選擇安裝的位置上。有些壓縮工具有可能將其解壓到你的被選擇的安 裝位置的子目錄中。如果是這種情況,你可以將該子目錄的內容從子目錄移至安裝路徑下。
生成選擇文件
如果你需要在運行服務器時,具體化啟動選項,你可以在命令行標志出他們或者在一個選擇文件中設置他們。 對於每次服務器啟動時所使用的服務,你將會發現使用選擇文件來具體化你的MySQL配置是非常便利的。尤其是 在以下情況中:當MySQL服務在Windows上啟動時,其在兩個文件中尋找選項:在Windows目錄下的 my.ini 文件以及C:\my.cnf 文件。Windows目錄典型的命名如下:C:\WINDOWS or C:\WINNT。你可以通過下面的命令來決定WINDIR環境變量 的值: C:\> echo %WINDIR% MySQL首先在my.ini 文件中尋找選項,然后是在my.cnf 文件中。然而,為了避免混淆,最好是只用一個文件。 如果你的PC使用加載的啟動裝備同時C:不是啟動區,那你只能通過my.ini文件來進配置。不管你使用哪種選擇 文件,該文件必須是文本格式。你同時也可以充分利用包含在你的MySQL發布版的樣本文件。在你的安裝目錄下 尋找諸如 my-small.cnf, my-medium.cnf, my-large.cnf和my-huge.cnf的文件,這些文件可以被重新命名同時 拷貝到合適的位置作為一個基本的配置文件來使用。一個選擇文件可以被任何文本編輯器生成和修改,諸如 Notepad等。例如,如果MySQL被安裝在E:\mysql 目錄下,而數據目錄是在E:\mydata\data下,你可以生成一個 包含 [mysqld] 部分的選擇文件來具體化基本目錄和數據目錄的參數值:
[mysqld] # set basedir to your installation path basedir=E:/mysql # set datadir to the location of your data directory datadir=E:/mydata/data
在這里需要注意Windows路徑名在事先使用的斜線而不是反斜線選擇文件中被具體化。因此當你使用反斜線時, 你必須使用雙斜線。
[mysqld] # set basedir to your installation path basedir=E:\\mysql # set datadir to the location of your data directory datadir=E:\\mydata\\data
在Windows中,MySQL安裝程序直接將數據目錄安裝在你安裝MySQL的目錄下。如果你需要在另外不同的位置使用 數據目錄,你需要將整個數據目錄的內容拷貝至新的位置。例如,如果MySQL安裝在C:\Program Files\MySQL\MySQL Server 5.0 目錄下,則數據目錄的位置默認是在 C:\Program Files\MySQL\MySQL Server 5.0\data下。如果你需要將E:\mydata 作為你的數據目錄,你需要做以下兩件事情:
1 將整個數據目錄和它的所有內容從C:\Program Files\MySQL\MySQL Server 5.0\data 移至E:\mydata.。
2 每次啟動服務時,使用a--datadir選項來確認新的數據目錄位置。
選擇MySQL服務類型
以下顯示了MySQL5.0Windows版本提供的服務類型:
mysqld-debug帶有完全調試和自動內存分配檢查的編譯,該編譯對象也包括 InnoDB和BDB數據表。 mysqld 優化InnoDB支持的二進制數據。 mysqld-nt優化命名管道支持的二進制數據。 mysqld-max優化InnoDB 和 BDB數據表所支持的二進制數據 mysqld-max-nt同mysqld-max功能一樣,但是編譯時支持命名管道
上述優化選項都是針對Intel 處理器的,但是應該可以工作在任何Intel i386-class 或者更高的處理器。在MySQL 5.0中,所有的Windows版本服務器都提供了對數據庫目錄的符號鏈接。 MySQL提供了對Windows平台上的TCP/IP 的支持。mysqld-nt和 mysql-max-nt 服務器則提供了對Windows NT,2000,XP和2003下的命名管道的支持。然而,不管在何種平台下,默認使用的都是TCP/IP。(在很多Windows 配置下,命名管道要比TCP/IP服務要慢)
命名管道的使用受以下條件的制約:
命名管道只有當你啟動服務時選擇 --enable-named-pipe才會被激活。非常有必要的顯式使用該選項 ,因為有些用戶在命名管道正在使用時關掉MySQL服務器遇到過故障問題。 命名管道只有在mysqld-nt 或mysqld-max-nt 服務器下並且僅當該服務器運行在支持命名管道的 Windows版本的平台下才能使用。 在Windows 98 or Me系統下,只有當其安裝了TCP/IP后,這些服務才能夠運行。命名管道的連接不能 使用。 上述服務在Windows 95下不能夠運行。注意:在參考手冊中的大部分例子都使用mysqld作為服務名。如果你使用另外一個服務器,例如mysqld-nt,則 需對上述例子作合理的替代。
首次開啟服務
這部分的信息主要應用在使用Noinstall版本安裝MySQL時,或者希望手動而不是使用GUI工具配置和檢測MySQL 的情況下。在Windows 95, 98, or Me下,MySQL客戶端經常和使用TCP/IP的服務器相連接。(這允許在你網絡上的任意機器 可以和MySQL服務器連接)。基於這一點,你必須保證在啟動MySQL前,TCP/IP 支持安裝在你的機器上。你可以 到在你Windows CD-ROM中找到TCP/IP服務。 在這里需要注意的是如果你正在使用老的Windows 95發布版本(例如OSR2),那很有可能你在使用一個舊的 Winsock軟件包;MySQL需要的是Winsock 2。你可以從http://www.microsoft.com/.下載最新的Winsock軟件包 。Windows 98具有新的Winsock 2庫,所以無需更新庫。在基於NT的系統例如 Windows NT, 2000, XP, or 2003上,客戶可以有兩個選擇。他們可以使用TCP/IP或者當 服務器支持命名管道的連接時使用命名管道。為了得到在TCP/IP下工作的Mysql版本,你必須安裝service pack 3(或者更新的版本) 如果在啟動時,選擇 --shared-memory, Windows版本的MySQL 5.0同樣也支持共享內存的連接。客戶端可以選 擇 --protocol=memory 選項來進行共享內存的連接。
以上對啟動MySQL服務進行了總體概述,下面的內容提供了從命令行或者作為Windwos服務來啟動MySQL服務器更 加具體的信息:
假設MySQL安裝在默認位置C:\Program Files\MySQL\MySQL Server 5.0下。如果你把MySQL安裝在不同的位置上 ,則需調整相應的路徑名。測試工作可以從控制台窗體(或者通過“DOS window”)通過一個即時命令來完成。 這樣你就可以會在窗體中比較容易的看到服務器狀態信息。如果你的配置有誤時,這些信息將有助於你識別和 修復任何故障。為了開啟服務,輸入以下命令:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld --console 對於InnoDB支持的服務器,在服務啟動時你可以看到下列信息: InnoDB: The first specified datafile c:\ibdata\ibdata1 did not exist: InnoDB: a new database to be created! InnoDB: Setting file c:\ibdata\ibdata1 size to 209715200 InnoDB: Database physically writes the file full: wait... InnoDB: Log file c:\iblogs\ib_logfile0 did not exist: new to be created InnoDB: Setting log file c:\iblogs\ib_logfile0 size to 31457280 InnoDB: Log file c:\iblogs\ib_logfile1 did not exist: new to be created InnoDB: Setting log file c:\iblogs\ib_logfile1 size to 31457280 InnoDB: Log file c:\iblogs\ib_logfile2 did not exist: new to be created InnoDB: Setting log file c:\iblogs\ib_logfile2 size to 31457280 InnoDB: Doublewrite buffer not found: creating new InnoDB: Doublewrite buffer created InnoDB: creating foreign key constraint system tables InnoDB: foreign key constraint system tables created 011024 10:58:25 InnoDB: Started
當服務器完成啟動序列后,你可以看到如下信息,這些信息表明服務器已經開始服務客戶端連接:
mysqld: ready for connections Version: '5.0.13-rc' socket: '' port: 3306
服務器將會繼續將其所產成的判斷信息輸入到控制台上。而你則可以打開一個新的控制台來運行客戶端程序。如果你省略了 --console 選項,服務器將會把診斷信息輸出到 數據目錄下的錯誤日志中(默認是C:\Program Files\MySQL\MySQL Server 5.0\data )。錯誤日志以.err為擴展名。注意:在MySQL授權數據表的帳號初始化是沒有密碼的。
在Windows命令行下開啟MySQL服務
MySQL服務器可以手動從命令行啟動。該項操作可以在Windows的任何版本下完成。為了從命令行啟動mysqld服 務,你應該啟動一個控制台窗體(或者"DOS 窗體")同時輸入以下命令:
C:\> C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqld
在上述例子中使用的路徑可以根據你的系統安裝MySQL的路徑不同而改變。在非NT版本的Windows版本上, mysqld是在后台啟動的。這也就意味着在服務啟動之后,你查看另外的即時命令。基於這一點,你應該在服務 運行時打開另外一個控制窗體來運行客戶端程序。
你可以通過執行以下命令停止MySQL服務:
C:\> C:\Program Files\MySQL\MySQL Server 4.1\bin\mysqladmin -u root shutdown
該命令激活MySQL管理程序和服務器連接同時告訴他關閉服務。該名令是作為MySQL根用戶連接的,在Mysql權限 系統中,根用戶默認是管理員帳戶。注意在MySQL授權系統中的用戶和任意在Windows下登陸的用戶是完全獨立 的。如果mysqld沒有啟動,檢查錯誤日志文件查看是否服務器向其中寫入了信息,該信息說明問題產生的原因。錯 誤日志位於C:\Program Files\MySQL\MySQL Server 5.0\data 目錄下。該日志是以擴展名為.err的文件。你也 可以試着重新開啟mysqld 控制台服務,這樣你就有可能獲取一些有助於解決問題的信息。最后一個選項是開啟mysqld時選擇--standalone --debug。在這種情況下,mysqld 將會寫一個 C:\mysqld.trace的日志文件,該日志文件將會包含mysqld為何沒有啟動的原因。
使用mysqld --verbose --help 可以看到mysqld所提供的所有選項的幫助信息。
作為一項Windows服務開啟MySQL
在NT系列的Windows版本(Windows NT, 2000, XP, 2003)中,推薦運行MySQL服務的方法是將其作為Windows服務 進行安裝,在這種情況下MySQL隨着Windows開始和結束自動開始和結束。一個作為服務被安裝的MySQL服務器能 夠被從命令行上使用NET命令或者使用圖形界面服務程序所控制。服務程序(Windows 服務控制管理器)可以被在 Windows控制面板中找到(在Windows 2000, XP, and Server 2003的管理工具下)。建議在執行服務器安裝程序 時或者在命令行中執行刪除操作時關閉服務應用程序。這將會防止很多錯誤。在將MySQL作為Windows服務安裝之前,如果當前服務器正在運行,應該首先使用下述命令停止其的運行:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqladmin -u root shutdown
注意:如果MySQL根用戶有密碼,那么你需要這樣激活命令:
C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqladmin -u root -p shutdown ,同時必須根據提示輸入 用戶密碼。
這調用了MySQL的管理功能mysqladmin,mysqladmin可以連接到服務器,讓服務器關閉。這個命令是作為MySQL 的 root用戶而和服務器建立連接的,MySQL的 root用戶在MySQL授權系統中是默認管理帳戶。需要注意的是在 MySQL授權系統中的用戶是完全獨立於Windows上登錄用戶。
用下列命令可將服務器作用一項服務安裝:
C:\> mysqld –install
如果你用server名字在將服務器安裝成一項服務的過程中遇到問題, 那就試試用全稱路徑名。舉例來說:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld --install
你也可以將到mysql bin目錄的路徑加入到Windows 系統PATH 環境變量:
在Windows桌面上,右擊“我的電腦”,選擇“屬性” 出現系統屬性菜單,選擇“高級”,然后單擊“環境變量”按鈕。 在“系統變量”列表中選擇“路徑”,然后單擊“編輯”按鈕。這時會出現編輯系統變量對話框。 將光標放在“變量值”對應的文字的末尾(請使用 End key,以確保光標在最后的位置) 。然后輸入 MySQL bin 目錄的全稱路徑, (舉個例子, C:\Program Files\MySQL\MySQL Server 5.0\bin), 注意應該用分 號將這個路徑與其它值分開。 點擊“確定”逐個關閉所有打開的對話框。現在你就可以在DOS系統下從系統的 任意目錄中,通過輸入任意可執行的 MySQL 程序的名字而找到該程序,不必再輸入路徑。這包括服務器、 mysql 客戶和所有 MySQL 命令行比如 mysqladmin 和 mysqldump。 注意如果你在同一台機器上運行多個MySQL 服務器的話,就不要將MySQL bin 目錄加入到 Windows 路 徑中。
警告: 在手工編輯系統路徑的時候一定要特別小心,如果不小心刪除或改變了系統路徑中的任何部分都將導致 誤操作甚至導致系統不穩定。服務安裝命令並不啟動服務器,關於這點后面將詳細介紹。
MySQL 5.0 在安裝服務的過程中對附加參數提供的支持有限: 你可以在安裝選項之后立即為服務命名,否則默認的服務名字是 MySQL。
如果設置了一個服務名字,就可以用使用單一選項。通常按照約定,這應當是--defaults- file=file_name 來設置選項文件的名字,服務器在啟動時會從選項文件中讀取選項。可以使用單一選項而不用--defaults-file,但不推薦這樣做。因為,--defaults-file 更加靈活,你可以 通過將多個選項放到指定的選項文件中而為服務器設置多個啟動選項。同樣,在MySQL 5.0中我們也不支持使用 不同於--defaults-file的選項,但5.0.3版本就可以這樣做了。
對於MySQL 5.0.1,你也可以在服務名字下設置一個 --local-service(本地服務)選項。這會使服務 器用LocalService Windows帳戶運行。這種帳戶只在Windows XP或更新的系統上才有。如果服務名字下既有-- defaults-file 也有 --local-service,那么它們之間不論次序。 對於安裝成Windows服務的MySQL服務器來說,由下面的規則決定服務名字和服務器使用的選項文件: 如果服務安裝命令沒有指定服務名字,那么安裝選項將默認服務名字為MySQL, 服務器將使用 MySQL服 務,並從標准選項文件中的 [mysqld]群中讀取選擇。 如果服務安裝命令沒有指定了一個服務名字,服務器將使用指定的服務名字並從從標准選項文件中與 服務名字相同的群中讀取選項。 服務器也從標准文件選項文件中的[mysqld]群中讀取選項。這保證可以從[mysqld]群中讀取所有MySQL服務都 用的選項,而用指定服務名字按照的服務器使用和與指定服務名字相同的選項群。 如果安裝命令在服務名字之后指定一個 --defaults-file 選項,那么服務器只從指定文件的 [mysqld] 群中讀取選項而忽略標准選項文件。
下面的命令是一個復雜的例子:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld --install MySQL --defaults-file=C:\my- opts.cnf
在這里,由安裝選項給出了默認服務名字MySQL。如果沒有給出--defaults-file選項,那么這個命令將使服務 器從標准選項文件中的[mysqld]群中讀取。然而在這里給出了--defaults-file選項,所以服務器只從指定文件 的[mysqld] 選項群讀取。
你也可以在啟動MySQL服務之前,在Windows Services 工具欄中將選項定義為啟動參數。一旦MySQL服務器被安裝成一項服務,Windows就會在啟動時自動啟動該服務。也可以在Services 工具欄中直接 啟動MySQL服務器,或使用NET START MySQL命令也可。NET 命令不區分大小寫。
作為服務運行時,mysqld無權使用控制窗口,因此在這里看不到消息。如果mysqld不能啟動,就查錯誤記錄看 看服務器是不是寫下了什么說明問題原因的消息。錯誤記錄在MySQL數據目錄下(比如: C:\Program Files\MySQL\MySQL Server 5.0\data)。錯誤記錄的后綴名是 .err。
MySQL作為服務安裝的情況下,如果服務正在運行,Windows關閉的時候會自動停止服務。 如果你不想在boot 進程中自動啟動服務,你可以將服務器作為手動服務安裝。手動服務的安裝需要選擇“手動 安裝” 選項而不是 “安裝”選項:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld --install-manual
要刪除作為服務安裝的服務器時,首先要通過NET STOP MYSQL關閉正在運行的MYSQL,然后用“刪除”選項刪除 它:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld --remove 如果mysqld不是作為服務運行,可以用命令行啟動它。
五、測試 MySQL安裝
你可以通過執行下列任何一個命令來測試MySQL 服務器是否安裝:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqlshow C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqlshow -u root mysql C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqladmin version status proc C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql test
如果mysqld對來自客戶程序的TCP/IP 連接反應很慢,那么說明你的DNS可能有問題。在這種情況下,用--skip -name-resolve選項啟動mysqld,而且在MySQL 授權列表的Host欄中只使用本地Host和IP。 你可以強迫 MySQL客戶運用管理連接,而不用TCP/IP。方法是選定--pipe 或--protocol=PIPE 按鈕,或指定 . (period)作為主機名。運行--socket 選項來規定管道名。
九、排除在Windows下安裝MySQL的故障
如果是初次安裝MySQL,你可能會遇到一些阻止MySQL啟動的錯誤,這一部分的目的就是幫助你診斷和排除某些 故障。 在排查故障時,可用的第一項資源就是錯誤記錄。MySQL 服務器的錯誤記錄會記下阻止服務器啟動的相關錯誤 。錯誤記錄在數據目錄下,my.ini文件中記載了數據目錄的地址。默認的文件目錄位置是C:\Program Files\MySQL\MySQL Server 5.0\data。 另外在MySQL服務運行過程中的控制信息也可能會記載一些相關的錯誤。在mysqld作為服務安裝之后,從命令行 中執行NET START mysql命令查看是否有關於作為服務啟動MySQL服務器的錯誤信息。
下面的例子是一些首次安裝MySQL和啟動服務器的過程中,可能遇到的常見錯誤信息:
System error 1067 has occurred. Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist
當 MySQL 服務器找不到 mysql privileges database 或其它關鍵文件時,就會產生這樣的信息。當 MySQL的原始數據或數據目錄安裝在不同於默認位置(分別是C:\mysql 和 C:\Program Files\MySQL\MySQL Server 5.0\data )時,常常遇到這個問題。 一種情況是MySQL已升級並安裝到新的位置,但配置文件並沒有反映新的安裝位置。另外 ,可能會產生相互沖 突的新、舊配置文件。因此,在升級MySQL時,應確保刪除舊的配置文件或重命名。 如果你將MySQL安裝到了C:\Program Files\MySQL\MySQL Server 5.0以外的其它位置,你必須確保MySQL服務器 通過一個配置文件(my.ini) 知道安裝的位置。my.ini文件必須在Windows目錄下,通常是C:\WINNT 或 C:\WINDOWS。你可以從WINDIR環境變量的值來確定其具體位置,需要從命令提示符發出下列命令:
C:\> echo %WINDIR%
生成一個選項文件,並且可以用任何文本編輯程序修改,比如Notepad。舉例來說,如果MySQL安裝在E:\mysql 、數據目錄是D:\MySQLdata,你可以創建一個選項文件,在其中創建一個[mysqld]部分來定義basedir 和 datadir參數:
[mysqld] # set basedir to your installation path basedir=E:/mysql # set datadir to the location of your data directory datadir=D:/MySQLdata
注意在選項文件中,Windows 路徑名是用(forward) slashes 定義的,而不是用 backslashes。如果你使用的 是 backslashes,你就需要將它們加倍:
[mysqld] # set basedir to your installation path basedir=C:\\Program Files\\MySQL\\MySQL Server 5.0 # set datadir to the location of your data directory datadir=D:\\MySQLdata
如果你在MySQL配置文件改變了datadir值,那么你在重新啟動MySQL服務器之前就必須將已有的MySQL數據目錄 轉移到相應的位置。
Error: Cannot create Windows service for MySql. Error: 0
如果你不先停止並刪除現有的MySQL而重新安裝或升級時,或用MySQL Configuration Wizard安裝 MySQL時,就會產生這樣的錯誤。因為當Configuration Wizard試圖安裝服務時,就會發現已經有一個同名的服 務。 對這個問題的一個解決方法是,在使用configuration wizard時選擇一個服務名稱,而不用默認的mysql 。這 可以使新的服務正確地安裝,但舊的還放在那里。建議最好還是把不用的刪掉。
要永久刪除舊的mysql服務,需要用戶以管理權限在命令行上執行下列命令: C:\>sc delete mysql [SC] DeleteService SUCCESS
如果你的Windows版本上沒有sc工具欄,就從下面的網址上下載delsrv工具欄: http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/delsrv-o.asp 然后運用delsrv mysql syntax。
六、在Windows上升級MySQL
這部分介紹一些在Windows上升級MySQL的必需步驟。
1. 在升級之前,你應當一直支持目前的MySQL安裝。 “Database Backups” 2. 在http://dev.mysql.com/downloads可以下載在Windows上安裝MySQL 的最新內容。 3. 在升級MySQL之前,必須停止服務器。
如果服務器是作為服務安裝的,要從命令提示符通過下列命令停止服務:
C:\> NET STOP MYSQL
如果不是作為服務安裝的,就用下列命令停止MySQL服務器:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqladmin -u root shutdown
當將4.1.5以前的版本升級到 MySQL5.0時,或將用Zip壓縮文件安裝的MySQL升級到用MySQL Installation Wizard安裝的MySQL版本時,必須手動刪除以前的安裝和MySQL服務(如果服務器有作為服務安裝的話). 用下列命令刪除原來的MySQL服務:
C:\> C:\mysql\bin\mysqld --remove
如果不刪除原有服務,MySQL Installation Wizard可能無法安裝新的MySQL服務。
如果你從Zip 壓縮文檔安裝MySQL,要么覆蓋原有的MySQL安裝(通常在C:\mysql),要么在不同的目錄下安裝 ,比如C:\mysql4。建議覆蓋原有安裝。
重啟服務器。如果MySQL是作為服務運行的話,用NET START MySQL,或者直接調用mysqld。
Windows 和 Unix兩種系統下的MySQL比較
MySQL在Windows上已經相當穩定。Windows版本的MySQL和相應的Unix版本的MySQL具有相同的特性,但存在以下 幾點不同:
• Windows 95和線程
Windows 95分出約200881064151字節的主內存給每一個線程。MySQL的每個連接創建一個新的線程,所以如果服務器處理 多個連接時,不應該在Windows 95下運行 mysqld。其他版本的Windows不存在這個bug。
• 限制端口數量
Windows系統下大概有4,000個可用端口,當一個端口的連接關閉時,需要2-4分鍾才能重新啟用該端口。當處 於代理連接和斷開連接的高峰期時,可能使所有的端口在重新啟用之前都處於關閉狀態。如果發生這種情況, MySQL服務器將停止相應,盡管它還處於運行狀態下。需要注意的是,機器上運行的其它應用程序也可能使用端 口,這也會使可用端口的數量下降。更多的信息請參看下面鏈接: http://support.microsoft.com/default.aspx?scid=kb;en-us;196271.
• 同時讀取
MySQL依賴於調用pread()和pwrite()系統來使INSERT和SELECT可用。目前,我們使用mutexes來代替pread()和 pwrite()。我們打算用虛擬的界面來替代文件水平界面,這樣我們就可以在NT,2000和XP系統上使用readfile ()/writefile()界面並獲得較高的速度。目前MySQL 5.0只能執行2,048個文件,這就意味着不能在Windows NT ,2000,XP和2003以及Unix下運行多個同時運行的線程。
• 封閉讀取
MySQL對每一個連接使用封閉讀取,如果指定的通道連接可用,這就意味着以下幾點:
o一個連接不會在8小時后自動斷開,這發生於Unix版本的MySQL。 o如果連接懸掛,只有關閉MySQL才能斷開該連接。 omysqladmin kill 對睡眠狀態的連接無效。 o只要存在睡眠連接,mysqladmin shutdown不會異常終止。
• ALTER TABLE
當你正在執行一個ALTER TABLE語句時,在被其他線程使用前表格將被鎖定。在Windows系統下可發生該情況, 你不能刪除被另外一個線程使用的文件。將來我們可能找到解決該問題的方法。
• DROP TABLE
因為MERGE 處理器處理隱藏於MySQL上一層的表格,這可使Windows下的被MERGE表格使用的DROP TABLE不工作。 因為Windows不允許dropping文件開啟,你就必須轉儲清除所有的MERGE表格(使用FLUSH TABLES)或者在 dropping文件前先撤銷MERGE表格。
• 數據目錄和索引目錄
Windows系統忽略了CREATE TABLE的數據目錄和索引目錄選項,這是由於Windows不支持符號連接造成的。在擁 有無功能realpath()調用的系統上也會忽略這些選項。
• 撤銷數據庫
你不能夠撤銷正在被某個線程使用的數據庫。
• 從任務管理器內關閉MySQL
你不能夠在任務管理器內關閉MySQL,也不能依靠Windows 95的關機操作關閉MySQL。你必須使用mysqladmin shutdown來關閉MySQL。
• 名稱的大小寫
在Windows下的文件名不區分大小寫,所以Windows同樣不區分MySQL數據庫和表格的名稱的大小寫。唯一的限制 就是數據庫和表格名稱必須在給定的語句內全部使用相同的case來指定。
• ‘\’路徑名分離字符
在Windows下使用‘\’來分離路徑名,‘\’同樣是MySQL里的換碼符。如果你使用LOAD DATA INFILE 或者 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-name | 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文件。
