MySQL 4.0 升级到5.0

  由于需要,从4.0直接升级到5.0,查看了一下changelog,发现主要有以下变化:

  一、从 4.0 到 4.1 的主要变化

如果在4.1.0到4.1.3版本的MySQL中创建了包含 TIMESTAMP 字段的 InnoDB
  表。则在升级到4.1.4及更高时需要重建表,因为存储格式发生变化了 字符串根据标准SQL来比较:比较之前不删除末尾的空格,以前用末尾空格扩展了比较短的字符串。现在的结果是

  'a' > 'a  ',以前则不这样。可以用 mysqlcheck 来检查一下数据表 TIMESTAMP 返回 'YYYY-MM-DD HH:MM:SS' 格式的字符串。在MySQL

  4.0中,可以增加选项 --new 来获得MySQL 4.1中这方面的特性 在MySQL

  4.1.1前,语句解析器不是那么严格,它在处理字符串转时间转换时会忽略第一个数字前的其他字符。在4.1.1之后,就比较严格了 返回结果是 DATE, DATETIME, 或 TIME 类型的函数的结果会被转换成时间型

  二、再看从 4.1 到 5.0 的主要变化

InnoDB 和 MyISAM 表中空格结尾的 TEXT 字段索引顺序改变了。因此需要运行
  "CHECK TABLE" 语句修复数据表,如果出现错误,就运行 "OPTIMIZE TABLE" 或 "REPAIR

  TABLE" 语句修复,甚至重新转储(用mysqldump) MySQL 5.0.15开始,如何处理 BINARY 字段中填充的值已经改变了。填充的值现在是

  0x00 而非空格了,并且在取值的时候不会去除末尾的空格 从MySQL 5.0.3开始,DECIMAL 的实现方式已经改变了,5.0对 DECIMAL

  的格式限制严格多了 在MySQL 5.0.3到5.0.5之间版本的 MyISAM 和 InnoDB 表中创建的 DECIMAL

  字段升级到5.0.6之后会发生崩溃 在以前,等待超时的锁会导致 InnoDB

  回滚当前全部事务,从5.0.13开始,就只回滚最近的SQL语句了 在4.1.13/5.0.8以前,DATETIME 的加0后就转换成 YYYYMMDDHHMMSS 格式,现在变成

  YYYYMMDDHHMMSS.000000 格式了 从5.0.3开始,DECIMAL 用更有效的格式来存储 5.0.3开始,在计算 DECIMAL 值和舍入精确值的时候采用精确数学 4.1中,FLOAT 或 DOUBLE 之间的比较碰巧没问题,但在5.0中可能就不行了 从5.0.3开始,VARCHAR 和 VARBINARY 字段中末尾的空格不再删除 增加了一个新的启动选项 innodb_table_locks,它导致 LOCK TABLE 时也可以请求

  InnoDB 表锁。这个选项默认打开,不过可能在 AUTOCOMMIT=1 和 LOCK TABLES

  应用中会导致死锁

  看来,我只需主要关注 时间(

  TIMESTAMP, DATETIME< DATE, TIME

) 和
  数值型(

  FLOAD, DOUBLE, DECIMAL

) 这两种类型的变化;另外,我升级过程中暂时还不需要涉及到字符集问题,因此相对轻松一些。
  升级步骤如下:

执行FLUSH TABLES WITH READ LOCK;
  直接拷贝 MyISAM 表文件


  mysqldump

导出 Innodb 类型的表
  整个过程都很顺利,新系统启动之后,发现如下2个问题:

新增了关键字
  INOUT

,因此需要检查表结构中还有其他什么字段使用关键字了
  DATE_FORMAT

函数要求严谨多了,DATE_FORMAT('2006/11/24 09:14:00', '%Y-%m-%d %T')
  和

DATE_FORMAT('2006/11/2409:14:00', '%Y-%m-%d %T')
  的结果完全不一样,在 4.0 中,能兼容这两种格式,而在 5.0 中,只能正确的使用前者了,后者则会有问题。这也应该是上面提到的时间类型发生的变化所致。

  到此为止,升级基本结束,大致检查了

  DECIMAL

类型也没问题,剩下的就是检查其他的了

时间: 2024-10-29 04:26:44

MySQL 4.0 升级到5.0的相关文章

代码-PageOffice从2.0升级到3.0在从程序上调试出现错误

问题描述 PageOffice从2.0升级到3.0在从程序上调试出现错误 再打开在线Office是提示:当前PageOffice需要获取跟高版本的授权才能正常运行Error :0x00005..如果是PageOffice 2.0 升级到PageOffice 3.0,还需要修改两处代码: (1)修改调用了PageOffice的页面的aspx文件中的代码"Version=2.0.0.1"修改为"Version=3.0.0.1",如下: <%@ Register A

.net-.NETFramework 1.0 升级到4.0 无法找到rpt报表

问题描述 .NETFramework 1.0 升级到4.0 无法找到rpt报表 之前是用的vs 2003 ,framework 1.0 rpt 报表没有问题但是升级到vs2010 后 framework 4.0 后,就报错无法找到报表调试定位问题:rpt.SetDataSource([DataSet]),报错 rpt文件的代码文件 1.rpt.cs 继承 ReportClass,ReportClass 继承ReportDocument,命名空间引用:CrystalDecisions.crysta

求教,hadoop-2.2.0升级hadoop-2.6.0。

问题描述 求教,hadoop-2.2.0升级hadoop-2.6.0. 最近需要升级hadoop,从hadoop-2.2.0升级到hadoop-2.6.0,根据http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-hdfs/HdfsRollingUpgrade.html#dfsadmin_-rollingUpgrade 提示的来,第一步:./bin/hdfs dfsadmin -rollingUPgrade prepare

was服务器从6.0升级到7.0问题,求熟悉的大虾们指点迷津,不胜感激

问题描述 实用IBM的RAD工具进行企业级应用程序项目开发,最近was服务器由6.0升级为7.0,但是升级之后,系统中出现了一个问题:系统生成的附件,在ftp服务器上面查看的时候,文件中文名显示为乱码(附件里面的内容显示正常),但是通过邮件发送出去,看到的又是正常的数据.之前怀疑是字符集的问题,但是系统字符集和应用服务器字符集都检查过了,没有问题,ftp服务器的字符集也更新了,并没有解决问题,基本排除了这个原因.这里求各位大虾们支支招,还有什么可能的情况原因呢?该如何解决? 解决方案 解决方案二

MySQL 4.0升级到5.0

由于需要,从4.0直接升级到5.0,查看了一下changelog,发现主要有以下变化: 一.从 4.0 到 4.1 的主要变化 如果在4.1.0到4.1.3版本的MySQL中创建了包含 TIMESTAMP 字段的 InnoDB 表.则在升级到4.1.4及更高时需要重建表,因为存储格式发生变化了 字符串根据标准SQL来比较:比 较之前不删除末尾的空格,以前用末尾空格扩展了比较短的字符串.现在的结果是 'a' > 'a\t',以前则不这样.可以用 mysqlcheck 来检查一下数据表 TIMEST

ASP.NET1.0升级ASP.NET2.0的问题总结

asp.net|问题     这几天升级了一下原来的1.1项目,发现了一些问题,总结一下放在这里,也提醒还没有来得及升级或准备升级的朋友,升级的过程中少走弯路,少浪费时间. 1.Global.asax文件的处理形式不一样,转化后将出现错误 在vs2003中Global.asax具有代码后置文件,2.0下, 将代码分离文件移到 App_Code 目录下,以便使其自动变为可通过应用程序中的任意 ASP.NET 页面访问."Code-behind"属性将从 ASAX 文件的指令中删除.vs2

从IIS6.0升级到IIS7.0日期格式调整方法整理

将系统从IIS6.0平台升级导IIS7时(.netframework2.0 到4.0)操作系统WINSERVER2008时,有可能会遇到系统原本显示的日期格式被转化的问题 本人就遇到原本系统的日期格式是(yyyy-M-d) 结果平台升级后变成了(yyyy/M/d) 一下是从网上获取的解决方案,在此转载,以便记忆: ---------------- Win2008 IIS7日期格式更改方法 . 服务器从32位升级到64位的WIN2008,结果就出日期格式问题,首先想到的当然是到控制面板里面更改区域

环信iOS V2.0升级到V3.0的问题

问题描述 以前用环信的即时通讯的SDK是v2.0的(是通过cocoapods导入的,现在我通过cocoapods删除不了,也升级不了)我想直接把v3.0的SDK拉入进去这样可以吗?如果可以的话现在报错如下图所示,求解决办法??? 解决方案 同求,已关注,求给力回答!解决方案二:同求 楼上解决方案三:sdk只能留一个版本的,要集成V3必须先把V2的删掉.报错是有类重复.

从IIS6.0升级到IIS7.0日期格式调整方法整理_win服务器

将系统从IIS6.0平台升级导IIS7时(.netframework2.0 到4.0)操作系统WINSERVER2008时,有可能会遇到系统原本显示的日期格式被转化的问题 本人就遇到原本系统的日期格式是(yyyy-M-d) 结果平台升级后变成了(yyyy/M/d) 一下是从网上获取的解决方案,在此转载,以便记忆: ---------------- Win2008 IIS7日期格式更改方法 . 服务器从32位升级到64位的WIN2008,结果就出日期格式问题,首先想到的当然是到控制面板里面更改区域