MySQL 升级方法指南大全第3/5页

 更新时间:2008年01月26日 18:58:58   作者:  
通常,从一个发布版本升级到另一个版本时,我们建议按照顺序来升级版本。例如,想要升级 MySQL 3.23 时,先升级到 MySQL 4.0,而不是直接升级到 MySQL 4.1 或 MySQL 5.0。

不兼容的变化:在MySQL 5.1.8开始,TYPE = engine_name 还仍然是 ENGINE = engine_name 的同义语法,但有警告。从5.2开始,将完全删除这种语法,并报告错误。 
不兼容的变化:在MySQL 5.0.10中,触发器的命名空间已经改变了。在以前,触发器的名字必须和每个数据表都不一样。现在,只需要在数据库内唯一就行了。隐含的变化就是,DROP TRIGGER 语法使用模式名而非数据表名(模式名是可选参数,如果忽略了,就使用当前的模式) 
当从5.0升级到5.0.10及更高时,则必须删除触发器后重新创建它们,否则升级后就无法删除触发器了。建议如下:

导出触发器:
SELECT CONCAT('CREATE TRIGGER ', t.TRIGGER_SCHEMA, '.', t.TRIGGER_NAME,
              ' ', t.ACTION_TIMING, ' ', t.EVENT_MANIPULATION, ' ON ',
              t.EVENT_OBJECT_SCHEMA, '.', t.EVENT_OBJECT_TABLE,
              ' FOR EACH ROW ', t.ACTION_STATEMENT, '//' )
INTO OUTFILE '/tmp/triggers.sql'
FROM INFORMATION_SCHEMA.TRIGGERS AS t;
将触发器导出到文件 "/tmp/triggers.sql" 中去。 

停止服务器,然后删除数据库目录下的所有 "TRG" 文件:
shell>rm -f */*.TRG
启动服务器,倒入触发器:
mysql> delimiter // ;
mysql> source /tmp/triggers.sql //
不兼容的变化:MySQL 5.1.6引进了触发器权限机制。以前,创建触发器需要有 SUPER 权限,现在,这个操作只需要有 TRIGGER 权限。这改善了权限安全状况 
一些MySQL 5.1中作为保留关键字在MySQL 5.0中并没有作为保留关键字 
新引入了 "INSTALL PLUGIN" 和 "UNINSTALL PLUGIN" 语句用于操作API插件。同样,创建 FULLTEXT 索引时,可以用 "WITH PARSER" 子句关联解析器插件 
3、从 MySQL 4.1 升级到 MySQL 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之后会发生崩溃 
不兼容的变化:从5.0.3开始,除非和主函数之间有辅助的符号链接,否则服务器将不再默认地加载用户自定义函数(UDFs),也可以通过 --allow-suspicious-udfs 选项来启用 
不兼容的变化:5.0中禁用了更新日志(update log) ,不过可以用二进制日志(binary log)来代替它 
不兼容的变化:5.0中不再支持 ISAM 类型存储引擎(作者:可以通过重新编译源代码支持,不过非常不建议这么做) 
不兼容的变化:5.0中不再支持 MyISAM 的 RAID 选项,可以用 mysqldump 导出旧表然后重新导回去实现升级 
在5.0.6中,记录存储过程和触发器的二进制日志发生了一些变化,详见手册的 "17.4 Binary Logging of Stored Routines and Triggers" 
SQL部分:

不兼容的变化:从5.0.12开始,自然连接和使用 USING 的连接,包括外部连接的衍生形式,都按照SQL:2003标准来处理了;这个变化导致减少了自然连接和使用 USING 的连接产生的结果字段数,并且还将按照更合理的顺序显示这些字段,逗号比较符的优先顺序和 JOIN, LEFT JOIN 中的一样了 
不兼容的变化:在以前,等待超时的锁会导致 InnoDB 回滚当前全部事务,从5.0.13开始,就只回滚最近的SQL语句了 
不兼容的变化:触发器的变化,跟前面讲到的一样 
不兼容的变化:从5.0.15开始,CHAR() 函数返回二进制字符串,而不是按照连接字符集格式的字符串。子句 USING charset_name 可以自定义返回结果的字符集 
不兼容的变化:在5.0.13以前,NOW() 和 SYSDATE() 返回的结果一样。但从5.0.13开始,SYSDATE() 返回的是语句执行点的时间,这就可能和 NOW() 返回的结果不一样了,不过可以用 --sysdate-is-now 选项让 SYSDATE() 作为 NOW() 的同名函数 
不兼容的变化:在5.0.13以前,GREATEST(x,NULL) 和 LEAST(x,NULL) 如果 x 不是 NULL 值,则返回 x 。从5.0.13开始,只要任何参数是 NULL ,就返回 NULL,跟Oracle一样 
不兼容的变化:在4.1.13/5.0.8以前,DATETIME 的加0后就转换成 YYYYMMDDHHMMSS 格式,现在变成 YYYYMMDDHHMMSS.000000 格式了 
不兼容的变化:在4.1.12/5.0.6中,语句 LOAD DATA INFILE 和 SELECT ... INTO OUTFILE 中,当 FIELDS TERMINATED BY 和 FIELDS ENCLOSED BY 的值都是空的时候,结果就被改变了。以前,字段都按照它显示的宽度来读写的。现在变成按照足够保存字段值的宽度来读写它。然而,对MySQL 4.0.12/5.0.6来说,那些在它们之前导出来的文件可能无法正确用 LOAD DATA INFILE 语句导入 
一些MySQL 5.0中作为保留关键字在MySQL 4.1中并没有作为保留关键字 
从5.0.3开始,DECIMAL 用更有效的格式来存储 
5.0.3开始,在计算 DECIMAL 值和舍入精确值的时候采用精确数学 
4.1中,FLOAT 或 DOUBLE 之间的比较碰巧没问题,但在5.0中可能就不行了 
从5.0.3开始,VARCHAR 和 VARBINARY 字段中末尾的空格不再删除 
从5.0.3开始,BIT 是一个独立的数据类型了,不再是 TINYINT(1) 的同名词了 
MySQL 5.0.2增加了一些SQL模式以使对排除包含非法或者缺失值得记录有着更严格的控制 
从5.0.2开始,关键字 SCHEMA 和 SCHEMAS 被认为分别是 DATABASE 和 DATABASES 的同名词 
5.0中用户变量对大小写不敏感,而4.1中则不然 
增加了一个新的启动选项 innodb_table_locks,它导致 LOCK TABLE 时也可以请求 InnoDB 表锁。这个选项默认打开,不过可能在 AUTOCOMMIT=1 和 LOCK TABLES 应用中会导致死锁 
C API部分:

相关文章

  • MySQL视图(view)的基本用法及说明

    MySQL视图(view)的基本用法及说明

    这篇文章主要介绍了MySQL视图(view)的基本用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • MySQL数据库的多种连接方式以及实用工具

    MySQL数据库的多种连接方式以及实用工具

    mysql连接操作是客户端进程与mysql数据库实例进程进行通信,下面这篇文章主要给大家介绍了关于MySQL数据库的多种连接方式以及实用工具的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • MySQL复合查询的实现示例

    MySQL复合查询的实现示例

    复合查询语句是MySQL中一种非常重要的查询方式,可以用于优化查询性能和控制查询的结果集,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • 详解MySQL 联合查询优化机制

    详解MySQL 联合查询优化机制

    MySQL 使用联合的形式的地方会远远超过我们过去认知的范畴。基本上,它会认为每个查询都有联合,而不仅仅是从两张表中查出匹配的数据行,这包括了子查询,甚至仅仅对单表的 SELECT 操作。因此,理解 MySQL 如何执行联合十分重要。
    2021-05-05
  • MySQL数据库事务与锁深入分析

    MySQL数据库事务与锁深入分析

    这篇文章主要介绍了MySQL数据库事务与锁深入分析,内容介绍的非常详细,有对这方面不懂的同学可以跟着小编一起研究下吧
    2020-12-12
  • MySQL如何优化索引

    MySQL如何优化索引

    这篇文章主要介绍了MySQL如何优化索引,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-12-12
  • ERROR CODE: 1175 YOU ARE USING SAFE UPDATE MODE AN

    ERROR CODE: 1175 YOU ARE USING SAFE UPDATE MODE AN

    这篇文章主要介绍了ERROR CODE: 1175 YOU ARE USING SAFE UPDATE MODE AN,本文是在MySQL Workbench的环境操作,需要的朋友可以参考下
    2014-11-11
  • mysql版本5.5.x升级到5.6.x步骤分享

    mysql版本5.5.x升级到5.6.x步骤分享

    在我做的一个项目中,最近我对生产服务器上的一系列系统软件进行了升级,包括git、nginx、MySQL和PHP。这篇文章讲的是升级MySQL的过程,其他软件的升级将在其他文章中介绍。
    2016-01-01
  • MySQL5.7免安装版配置图文教程

    MySQL5.7免安装版配置图文教程

    Mysql是一个比较流行且很好用的一款数据库软件,如下记录了我学习总结的mysql免安装版的配置经验,感兴趣的的朋友参考下吧
    2017-09-09
  • mybatis in语句不能大于1000的问题及解决

    mybatis in语句不能大于1000的问题及解决

    这篇文章主要介绍了mybatis in语句不能大于1000的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11

最新评论