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