将MySQL4升级到MySQL5的方法
一、主要变化从4变为4.1如果包含时间戳字段InnoDB表创建在4.1.0 4.1.3版本的MySQL。如果你升级到4.1.4高,你需要重建表,因为存储格式发生了变化
串的比较根据标准SQL:在比较之前,没有空间,最后删除,和较短的字符串进行了扩展,最后的结果是空间。>,这是没有的情况下,你可以使用mysqlcheck检查数据表
时间戳返回the'yyyy-mm-dd HH字符串:MM:ss' format.at MySQL
在4中,您可以添加选项——在MySQL 4.1中获得这个特性的新选项
在mysql4.1.1,声明解析器不那么严格,它忽略了其他人物在处理字符串时转换的第一个数。后4.1.1,它更严格。
返回的结果是,日期,日期时间的结果,或时间型函数将转换为时间型
两。看看从4.1到5的主要变化。
文本字段索引序列在空间结束在InnoDB和MyISAM表的改变。所以它需要运行
检查表语句修复数据表,如果出现错误,请运行优化表或修复。
表表修复,甚至重新转储(用mysqldump)
从MySQL 5.0.15,如何处理的值填充在二进制领域已经发生了变化。填充的值是现在
的0x00不是空间,和最后空间不拆除时,值了。
因为MySQL 5.0.3,十进制的实施改变了,5对小数
格式化限制要严格得多。
在MySQL 5.0.3和十进制之间的版本5.0.5 MyISAM和InnoDB表创建
该字段将失事后的现场升级到5.0.6
在过去,等待超时会导致InnoDB锁
回滚当前所有的交易,从5.0.13,只返回最新的SQL语句
在4.1.13 / 5.0.8日期后,添加0的转换成yyyymmddhhmmss格式,现在已经成为
yyyymmddhhmmss.000000格式
从5.0.3,十进制存储在一个更有效的格式
5.0.3开始与精确的数学计算的十进制值时和舍入的精确值
4.1,浮点数或双值的比较恰好是好的,但在5可能是不可能的。
从5.0.3,在VARCHAR和varbinary字段结束的空间不再删除
添加一个新的启动选项,innodb_table_locks,,也可以要求当锁表
InnoDB表锁。这个选项是默认打开的,但它可以在自动提交= 1和锁表
死锁中的应用
看来我只需要专注于时间戳(datetime <日期、时间)和
两种fload(双,小数)的变化。另外,我不需要在升级过程中提到字符集问题,所以它相对来说比较轻松。
升级的步骤如下:
实施
复制代码代码如下所示:
用读锁刷新表;{ }
直接拷贝的MyISAM表文件
InnoDB类型的表就出口
整个过程非常顺利,新系统启动后,发现了以下2个问题:
添加新的关键字INOUT,所以你需要检查表中的其他字段使用关键字结构
的date_format功能需要大量的严谨性。
{代码} date_format(2006 / 11 / 24 09:14:00 '、' % y %M - % T)
和
程序代码
date_format(2006 / 11 / 2409:14:00 '、' % y %M - % T)
结果完全不同。4,这两种格式可以兼容,在5种格式中,前者只能正确使用,后者也有问题,这也应是上述时间类型变化的结果。
到目前为止,升级基本完成,小数类型大致检查,剩下的是检查其他。