MySQL 升級(jí)方法指南大全第4/5頁(yè)
更新時(shí)間:2008年01月26日 18:58:58 作者:
通常,從一個(gè)發(fā)布版本升級(jí)到另一個(gè)版本時(shí),我們建議按照順序來(lái)升級(jí)版本。例如,想要升級(jí) MySQL 3.23 時(shí),先升級(jí)到 MySQL 4.0,而不是直接升級(jí)到 MySQL 4.1 或 MySQL 5.0。
不兼容的變化:由于5.0中 DECIMAL 數(shù)據(jù)類型的實(shí)現(xiàn)方式發(fā)生了變化,因此如果使用就版本的庫(kù)文件需要注意這個(gè)問(wèn)題
不兼容的變化:在5.0.3中,ER_WARN_DATA_TRUNCATED 警告符號(hào)改名為 WARN_DATA_TRUNCATED 了
MYSQL 結(jié)構(gòu)體中的 reconnect 標(biāo)志被 mysql_real_connect() 設(shè)為 0。
4、從 MySQL 4.0 升級(jí)到 MySQL 4.1
服務(wù)器部分:
不兼容的變化:以下好幾個(gè)都是需要重建數(shù)據(jù)表的,可以使用 mysqldump 導(dǎo)出表后重新導(dǎo)回去
如果在4.1.0到4.1.3版本的MySQL中創(chuàng)建了包含 TIMESTAMP 字段的 InnoDB 表。則在升級(jí)到4.1.4及更高時(shí)需要重建表,因?yàn)榇鎯?chǔ)格式發(fā)生變化了
從4.1.3開始,InnoDB 表采用同一種字符集比較函數(shù)來(lái)比較那些 非latin1_swedish_ci 字符集且不是 BINARY 的字符串
如果在4.1.0到4.1.5版本的MySQl中對(duì) UTF8 字段或者其他多字節(jié)字段作了前綴索引,則在升級(jí)到4.1.6及更高時(shí)必須重建表
如果在4.1之前,數(shù)據(jù)庫(kù)、表、字段、約束名中使用了重音字符(字節(jié)值是128到255的字符),那么不能直接升級(jí)到4.1。因?yàn)?.1使用 UTF8 來(lái)存儲(chǔ)元數(shù)據(jù)名。
字符串根據(jù)標(biāo)準(zhǔn)SQL來(lái)比較:比較之前不刪除末尾的空格,以前用末尾空格擴(kuò)展了比較短的字符串?,F(xiàn)在的結(jié)果是 'a' > 'a\t',以前則不這樣??梢杂?nbsp;mysqlcheck 來(lái)檢查一下數(shù)據(jù)表
MyISAM 現(xiàn)在使用更好的校驗(yàn)和算法了
不兼容的變化:MySQL把字符串類型字段的長(zhǎng)度定義理解為字符長(zhǎng)度而不是字節(jié)長(zhǎng)度。
重要提示:MySQL 4.1用 UTF8 字符集存儲(chǔ)數(shù)據(jù)表名和字段名。如果有用標(biāo)準(zhǔn) 7字節(jié) US-ASCII 范圍之外的字符作為表名/字段名的話,需要重建表
重要提示:升級(jí)到4.1.1或更高后,就很難降級(jí)回到4.0或4.1了,因?yàn)?nbsp;InnoDB 使用了多個(gè)表空間的緣故
不兼容的變化:MySQL 4.1.13支持讓每個(gè)連接設(shè)定時(shí)區(qū),因此系統(tǒng)變量 timezone 改成 system_time_zone
所有的數(shù)據(jù)表和非二進(jìn)制字符串(CHAR, VARCHAR, 和 TEXT)的字段都有字符集,二進(jìn)制字符串字段包括 BINARY, VARBINARY, 和 BLOB
MySQL4.0中,如果有字段類型為 CHAR BINARY 或 VARCHAR BINARY,則它們會(huì)被當(dāng)作二進(jìn)制字符串類型
如果數(shù)據(jù)表的字段中存儲(chǔ)著MySQL 4.1直接就能支持的字符集字符數(shù)據(jù)時(shí),則可以將這個(gè)字段的值轉(zhuǎn)換成由合適的字符集存儲(chǔ)
MySQL 4.1中對(duì)數(shù)據(jù)結(jié)構(gòu)描述文件 .frm 的格式稍作改進(jìn),新版本能兼容這個(gè)新格式,但是舊版本則不能
windows下的服務(wù)器啟動(dòng)時(shí)增加 --shared-memory 選項(xiàng)即可支持從本地客戶端連接時(shí)使用共享內(nèi)存
不兼容的變化:從MySQL 4.1.1開始,對(duì)用戶自定義函數(shù)集合接口發(fā)生了很大改進(jìn)
不兼容的變化:從4.1.10a開始,除非和主函數(shù)之間有輔助的鏈接,否則服務(wù)器將不再默認(rèn)地加載用戶自定義函數(shù)(UDFs),也可以通過(guò) --allow-suspicious-udfs 選項(xiàng)來(lái)啟用
客戶端部分:
mysqldump 默認(rèn)啟用 --opt 和 --quote-names 選項(xiàng)
SQL部分:
不兼容的變化:字符串根據(jù)標(biāo)準(zhǔn)SQL來(lái)比較,如上面的"服務(wù)器變化"部分中提到的
不兼容的變化:TIMESTAMP 返回 'YYYY-MM-DD HH:MM:SS' 格式的字符串。在MySQL 4.0中,可以增加選項(xiàng) --new 來(lái)獲得MySQL 4.1中這方面的特性
不兼容的變化:二進(jìn)制數(shù)據(jù)例如 0xFFDF 被當(dāng)成字符串而非數(shù)字
不兼容的變化:在MySQL 4.1.1前,語(yǔ)句解析器不是那么嚴(yán)格,它在處理字符串轉(zhuǎn)時(shí)間轉(zhuǎn)換時(shí)會(huì)忽略第一個(gè)數(shù)字前的其他字符。在4.1.1之后,就比較嚴(yán)格了
不兼容的變化:在MySQL 4.1.2,SHOW TABLE STATUS 結(jié)果的 Type 字段改名為 Engine 了
當(dāng)執(zhí)行多表刪除語(yǔ)句時(shí),要?jiǎng)h除的表只能使用它的別名,而不能用真實(shí)表名
返回結(jié)果是 DATE, DATETIME, 或 TIME 類型的函數(shù)的結(jié)果會(huì)被轉(zhuǎn)換成時(shí)間型
AUTO_INCREMENT 字段不能設(shè)定 默認(rèn)(DEFAULT) 值了
LIMIT 不再接受負(fù)數(shù)參數(shù)了
SERIALIZE 不再是 sql_mode 變量的有效值了,它的取代值是 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
C API部分:
MySQL 4.1中的密碼哈希算法做了改進(jìn)以提升安全性,不過(guò)會(huì)導(dǎo)致兼容性問(wèn)題。使用MySQL 4.0及更早版本的客戶端庫(kù)文件會(huì)發(fā)生問(wèn)題。
不兼容的變化:mysql_shutdown() 函數(shù)增加一個(gè)參數(shù):SHUTDOWN-level
某些函數(shù)例如 mysql_real_query() 發(fā)生錯(cuò)誤時(shí)返回 1 而非 -1
密碼處理部分:
MySQL 4.1中的密碼哈希算法做了改進(jìn)以提升安全性,不過(guò)會(huì)導(dǎo)致兼容性問(wèn)題。使用MySQL 4.0及更早版本的客戶端庫(kù)文件會(huì)發(fā)生問(wèn)題。解決辦法有:
升級(jí)客戶端庫(kù)文件到4.1(不用升級(jí)服務(wù)器端庫(kù)文件)
運(yùn)行 mysql_fix_privilege_tables 腳本來(lái)加寬 user 表中的 Password 字段值,以適應(yīng)新的哈希算法。如果想要允許4.1以下的客戶端還能連接到服務(wù)器,那么服務(wù)器運(yùn)行時(shí)要增加參數(shù) --old-passwords
5、附錄
1、) 在Windows平臺(tái)上升級(jí)MySQL步驟:
備份舊數(shù)據(jù)
停止舊服務(wù)器
從windows的系統(tǒng)服務(wù)中刪掉mysql服務(wù),用如下命令:
C:\> C:\mysql\bin\mysqld --remove用可執(zhí)行安裝文件方式安裝mysql,或者解壓可直接執(zhí)行的二進(jìn)制壓縮包來(lái)安裝
重新注冊(cè)mysql服務(wù),用如下命令:
C:\> C:\mysql\bin\mysqld --install 重啟服務(wù)器
其他的問(wèn)題詳見上面提到的各種升級(jí)中會(huì)碰到的情況
2、) 升級(jí)授權(quán)表
相關(guān)文章
MySQL之Field‘***’doesn’t have a default value錯(cuò)誤解決辦法
這篇文章主要介紹了MySQL之Field‘***’doesn’t have a default value錯(cuò)誤解決辦法,需要的朋友可以參考下2015-04-04Mysql 的存儲(chǔ)引擎,myisam和innodb的區(qū)別
這篇文章主要介紹了Mysql 的存儲(chǔ)引擎,myisam和innodb的區(qū)別,需要的朋友可以參考下2014-12-12MySQL服務(wù)器的啟動(dòng)和關(guān)閉
作為MySQL管理員,一個(gè)普通的目標(biāo)就是確保服務(wù)器盡可能地處于運(yùn)行狀態(tài),使得客戶機(jī)能夠隨時(shí)訪問(wèn)它。但是,有時(shí)最好關(guān)閉服務(wù)器(例如,如果正在進(jìn)行數(shù)據(jù)庫(kù)的重定位,不希望服務(wù)器在該數(shù)據(jù)庫(kù)中更新表)。保持服務(wù)器運(yùn)行和偶爾關(guān)閉它的需求關(guān)系不是本書所解 決的。但是我們至少可以討論如何使服務(wù)器啟動(dòng)和停止,以便您具備進(jìn)行這兩個(gè)操作的能力。2008-04-04Linux中使用mysqladmin extended-status配合Linux命令查看MySQL運(yùn)行狀態(tài)
這篇文章主要介紹了Linux中使用mysqladmin extended-status配合Linux命令查看MySQL運(yùn)行狀態(tài),需要的朋友可以參考下2014-08-08MySql獲取當(dāng)前時(shí)間并轉(zhuǎn)換成字符串的實(shí)現(xiàn)
本文主要介紹了MySql獲取當(dāng)前時(shí)間并轉(zhuǎn)換成字符串的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07