MySQL 4到5的快速升级
2007-03-18 09:30
351 查看
作/译者:叶金荣(Email:
),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究。
周末帮一个客户做了一次升级,是从4.0.22直接升级到5.0.37,在windows平台下。由于是在windows平台下,而且涉及到乱码,担心会比较麻烦,我就先用一小部分数据进行测试。结果表明,如果原来采用的是latin1字符集,并且在MySQL 5中也使用latin1作为默认字符集的话,在显示中文方面是不会有问题的。当然了,这只是针对MyISAM类型的表,如果是InnoDB我想还是需要通过 "mysqldump" 来实现的。
由于MySQL 4.0和5.0的MyISAM存储引擎在各方面都发生了变化,详情可以看"MySQL 4.0 升级到5.0"。这些变化会导致一些异常的情况出现,比如一个 VARCHAR/CHAR 类型的字段查询上的异常,看下面几个查询:
明明 'yejr' 和 name 内容相同,而且长度也一样,却无法得到正确的结果呢?先来看看数据表的情况吧:
原来是把旧版本的文件直接拷贝到新版本的环境下后,出现了checksum失败,那就好办了,REPAIR 一下吧:
然后再查询一下,就没有任何问题了。
最后,我们来看看原因是什么,查了一下手册,发现有这么一句话:
这是在从MySQL 4.0 到 4.1 所产生的变化,在 "升级 MySQL" 中就能看到全部的变化列表。
),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究。
周末帮一个客户做了一次升级,是从4.0.22直接升级到5.0.37,在windows平台下。由于是在windows平台下,而且涉及到乱码,担心会比较麻烦,我就先用一小部分数据进行测试。结果表明,如果原来采用的是latin1字符集,并且在MySQL 5中也使用latin1作为默认字符集的话,在显示中文方面是不会有问题的。当然了,这只是针对MyISAM类型的表,如果是InnoDB我想还是需要通过 "mysqldump" 来实现的。
由于MySQL 4.0和5.0的MyISAM存储引擎在各方面都发生了变化,详情可以看"MySQL 4.0 升级到5.0"。这些变化会导致一些异常的情况出现,比如一个 VARCHAR/CHAR 类型的字段查询上的异常,看下面几个查询:
mysql>SELECT name,'yejr',length(name),length('yejr') mysql>FROM user WHERE name ='yejr'; Empty set (0.00 sec) mysql> mysql> mysql>SELECT name,'yejr',length(name),length('yejr') mysql>FROM user WHERE uid=1; +---------+------+--------------+----------------+ | name | yejr | length(name) | length('yejr') | +---------+------+--------------+----------------+ | yejr | yejr | 4 | 4 | +---------+------+--------------+----------------+ mysql> mysql>SELECT name,'yejr',length(name),length('yejr') mysql>FROM user WHERE uid=1 AND name='yejr'; Empty set (0.00 sec)
明明 'yejr' 和 name 内容相同,而且长度也一样,却无法得到正确的结果呢?先来看看数据表的情况吧:
mysql> CHECK TABLE user; +---------------------+-------+----------+---------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +---------------------+-------+----------+---------------------------------------------------------+ | yejr.user | check | error | Checksum for key: 2 doesn't match checksum for records | | yejr.user | check | error | Corrupt | +--------+-------+----------+---------------------------------------------------------+ 2 rows in set (0.04 sec)
原来是把旧版本的文件直接拷贝到新版本的环境下后,出现了checksum失败,那就好办了,REPAIR 一下吧:
mysql>REPAIR TABLE user; +--------+--------+----------+----------+ | Table | Op | Msg_type | Msg_text | +--------+--------+----------+----------+ | yejr.user | repair | status | OK | +--------+--------+----------+----------+
然后再查询一下,就没有任何问题了。
最后,我们来看看原因是什么,查了一下手册,发现有这么一句话:
MyISAM 现在使用更好的校验和算法了
这是在从MySQL 4.0 到 4.1 所产生的变化,在 "升级 MySQL" 中就能看到全部的变化列表。
总结一下,通常情况下,直接拷贝MyISAM数据文件即可实现低成本升级,但是如果碰到了字符集以及版本变化比较大的时候,最好看看本文以及上述提到的 另外两篇文章。还有就是,如果出现一些异常情况了,就先执行 CHECK TABLE 来看看数据表是否有问题,然后再决定下一步该怎么做。
本文出自 “MySQL中文网”博客 http://www.imysql.cn/本文出自 “爱MySQL” 博客,转载请与作者联系!
相关文章推荐
- WDCP快速升级PHP5.4、MySql5.5版本环境
- MySQL 4到5的快速升级
- MySQL 4到5的快速升级
- 快速升级PHP5.4、MySql5.5版本WDCP面板一键包
- WDCP快速升级PHP5.4、MySql5.5版本环境
- MySQL大数据量快速分页实现
- 从旧版升级到MySql4.1上的中文乱码问题解决方案
- linux-快速安装mysql5.6*
- 使用MySQL Migration Toolkit快速将Oracle数据导入MySQL
- MySQL5.5升级到5.6
- 手把手教你升级到 Mysql 5.5
- CentOS6.x升级MySQL版本5.1到5.6
- mysql 快速入门
- mysql升级那点事
- mysql升级到5.7.9通过navicat11.1.12执行查询语句报错解决方案
- mysql5.6升级5.7
- mysql快速入门
- RDIFramework.NET — 基于.NET的快速信息化系统开发框架- 5.4平台日志、异常管理、生成自动升级配置文件模块
- RDIFramework.NET — 基于.NET的快速信息化系统开发框架- 5.4平台日志、异常管理、生成自动升级配置文件模块
- mysql操作说明,插入时外键约束,快速删除