mysql 导入.trg_MySQL 升级方法指南大全第3/5页

这篇博客提供了从MySQL不同版本升级到5.0及5.1的详细步骤,强调了5.0.10后触发器命名空间的变化和5.1.8开始的警告。升级过程中涉及触发器的导出、删除和重新创建,以及对不兼容变化的处理,如BINARY字段填充值的改变和DECIMAL类型的实现。此外,还提到了MySQL 5.1中触发器权限机制的改进和新的保留关键字。
摘要由CSDN通过智能技术生成

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部分:

相关文章

1a1b05c64693fbf380aa1344a7812747.png

这篇文章主要介绍了Slave memory leak and trigger oom-killer,需要的朋友可以参考下2016-07-07

4f55910a645b073bc4fc65dc10dc14bd.png

这篇文章主要介绍了MySQL下PID文件丢失的相关错误的解决方法,具体的提示可能会是"mysql PID file not found and Can’t connect to MySQL through socket mysql.sock",需要的朋友可以参考下2015-07-07

0ea3c7666119d5615e582f823fb3fad6.png

MySQL server has gone away 问题解决方法,需要的朋友可以参考下。2010-06-06

4f96a78db829b1556ff16de21e013c7a.png

MySQL 配置文件my.cnf 例子最详细翻译,需要的朋友可以看看。2009-05-05

8cc1031babc6aff2319f1c6af8544aa0.png

mysql 编码设置命令,需要的朋友可以参考下。2009-10-10

0c932a99bb7b6f23c937db507070cc7b.png

在事务中,每个正确的原子操作都会被顺序执行,直到遇到错误的原子操作,此时事务会将之前的操作进行回滚。回滚的意思是如果之前是插入操作,那么会执行删 除插入的记录,如果之前是update操作,也会执行update操作将之前的记录还原2014-05-05

cca732bf65a93ed2ec0ac80c638460fe.png

这篇文章主要给大家介绍了关于MySQL SHOW PROCESSLIST协助故障诊断的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧2019-02-02

2d9f31f2af7b675a3d153d2b7f1035a7.png

这篇文章主要介绍了最新mysql-5.7.21安装和配置方法,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2018-09-09

b452cee8ec5cd9e58ab98eba17281e59.png

本文给大家分享的是如何使用php实现读取mysql一个库下面的所有的表table的代码,有需要的小伙伴可以参考下2016-12-12

f4838ec7e2d4da28e0b57d4e852dadd4.png

这篇文章主要介绍了MySQL 索引的优劣以及创建索引的准则,帮助大家更好的理解和使用MySQL 索引,感兴趣的朋友可以了解下2020-09-09

最新评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值