周末帮一个客户做了一次升级,是从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 4到5的快速升级相关推荐

  1. 高性能MySQL(第3版)(MySQL旗舰名著 惊献全面升级)

    高性能MySQL(第3版)(MySQL旗舰名著  惊献全面升级) [美]施瓦茨(Schwartz,B.)[美]扎伊采夫(Zaitsev,P.) [美]特卡琴科(Tkachenko,V.) 著 宁海元 ...

  2. 高性能MySQL(第3版)(MySQL旗舰名著惊献全面升级)

    高性能MySQL(第3版)(MySQL旗舰名著惊献全面升级) [美]施瓦茨(Schwartz,B.)[美]扎伊采夫(Zaitsev,P.) [美]特卡琴科(Tkachenko,V.) 著 宁海元 周振 ...

  3. 使用MySQL自带工具mysqlhotcopy快速备份mysql数据库

    使用MySQL自带工具mysqlhotcopy快速备份mysql数据库 发表于82 天前 ⁄ 网站备份 ⁄ 暂无评论 mysqlhotcopy是一个Perl脚本,最初由Tim Bunce编写并提供.它 ...

  4. mysql_upgrade --force_社区投稿 | MySQL 8.0.16 告别mysql_upgrade升级方式

    最熟悉的命令要消失了! MySQL 8.0.16 开始,MySQL 不推荐使用mysql_upgrade.取而代之的是 server upgrade的升级方式. 一.为什么变更升级方式 官方为什么这么 ...

  5. cad2016中选择全图字体怎么操作_DNF手游快速升级攻略 DNF手游怎么快速升级

    DNF手游中等级对玩家来说是至关重要的,等级越高可体验更多新玩法,而装备等级越高就代表着玩家的实力越强,所以大家都想知道怎么快速升级和提高装备强化成功率,下面就让小编聊聊个人的经验! DNF手游升级攻 ...

  6. mariadb mysql 5.6_MySQL / MariaDB 5.5 升级到 MySQL 5.6

    RHEL 及 CentOS 7 默认的资库系统是 MariaDB 5.5 (等同 MySQL 5.5), 虽然现时 MySQL 最新版是 5.7, 但一般上升级都建议一级一级上, 而 MySQL 5. ...

  7. 教你在Zabbix环境下快速升级nginx版本!

    转载来源 :教你在Zabbix环境下快速升级nginx版本 : https://www.jianshu.com/p/4e9c0b457f7b 1.环境描述原nginx版本:nginx 1.14.0 升 ...

  8. 网易云api如何调用_谈谈网易云如何快速升级

    首先,先介绍一下我自己网易云账号叭. 9级,村龄一年. 可能很多人会感叹自己注册了小几年的账号都没有这个等级,但其实说来也正常,毕竟一般人在正常使用的前提下,能做到不刻意的每天听歌300首的人真的少而 ...

  9. Kubernetes 1.14.1快速升级

    2019独角兽企业重金招聘Python工程师标准>>> Kubernetes 1.14.1已经正式发布,快速升级(含国内镜像快速下载链接)包括升级kubeadm/kubectl/ku ...

最新文章

  1. Java培训哪家机构好
  2. 我平常整理了CString的一些用法,很实用,发给你共享,相信你以后遇到CString的问题都会迎刃而解:...
  3. python ctypes教程_Python ctypes: Python file object - C FILE * | 易学教程
  4. boost::fusion::for_each用法的测试程序
  5. python中使用什么注释语句和运算_Python基础知识
  6. Word 2007批注及批注者姓名修改技巧
  7. SQL光标的基本使用
  8. R语言数据框行转列实例
  9. Android日常开发总结的技术经验60条 转
  10. mvc 调试 f12 浏览器闪退
  11. 宽带密码忘了怎么办?ADSL宽带账号密码找回教学
  12. 微信小程序获取公众号文章列表及显示文章
  13. Web前端开发精品课HTML与CSS基础教程 (莫振杰著) 完整pdf扫描版
  14. linux什么系统以dd镜像写入,linux下使用dd命令写入镜像文件到u盘
  15. 高琪300集——入门
  16. 图像表头数据读取,图像数据块读取,图像类型转换
  17. UE4随笔 —— 角色动画的骨骼重定向
  18. 蓝懿iOS零基础学习之旅 感谢刘国斌老师
  19. Lamdba及DataTable AsEnumerable()的使用
  20. Java NIO 非阻塞服务器端

热门文章

  1. react列表元素hover
  2. 原生js制作页面长时间未操作退出登录
  3. mysql 基础sql
  4. Python介绍与特点(自学python知识整理)
  5. Redis 数据结构与内存管理策略(上)
  6. 编程问题难解决,学会提问是关键!
  7. LNMP服务跨省迁移的解决方案
  8. python 操作mysql数据库
  9. SQL SERVER数据库多条件查询
  10. Research Fellow、Research Assistant、predoc等的区别