mysql is not null 替换_MySQL升级到8.0失败?看看新版数据库删除了哪些旧特性

如果目前的应用在mysql5.7上开发,当需要升级的时候,即主库直接复制到mysql8的库,sql语句可能会失败,或者产生不同的执行结果。所以在升级之前,需要检查应用是否用了一些mysql5特有的功能,使用的话,需要先删除或者替换到8的新功能。

3fc8bf4775c5d0d715ef83d0bfda1ac6.png

缓存

(1)删除的语句命令:FLUSH QUERY CACHE 和 RESET QUERY CACHE。

(2)删除的系统变量:

query_cache_limit、query_cache_min_res_unit、query_cache_size、query_cache_type,query_cache_wlock_invalidate。

(3)删除的状态变量:qcache_free_blocks,qcache_free_memory,qcache_hits,qcache_inserts,qcache_lowmem_prunes,qcache_not_cached,qcache_queries_in_cache,qcache_total_blocks

(4) 删除的线程状态变量:checking privileges on cache query,checking query cache for query,invalidating query cache for query ,invalidating query cache entries,sending cached resultto client,storing result in query cache,waiting for query lock。

加密函数

已经删除的加密函数有以下几种:

ENCODE(),DECODE(),ENCRYPT(),DES_ENCRYPT(),DES_DECRYPT()

对于ENCRYPT()函数,可以使用SHA2()替代,其它的函数使用AES_ENCRYPT()和AES_DECRYPT()替代。

空间函数


在mysql5.7 版本中,有很多空间函数标记为过时,这些过时的函数在8中就已经删除了,只保留了对应的ST_和MBR函数。

NULL

在SQL语句中,新的解析器不再将N解析为NULL。所以SQL语句应使用NULL代替N。注意的是如果使用load data infile 或者使用 select into out file操作文件导入导出,还是可以用N,这里等同为NULL。

数据库初始化安装

旧有的安装方式使用: mysql_install_db程序,8使用参数 --initialize,另外选项--bootstrap 和 INStALL_SCRIPTDIRCMake 也删除。

通用分区处理程序

通用分区处理已经在mysql服务中删除,为了实现给定表分区,需要使用存储引擎自己的分区处理程序,mysql8只支持InnoDB。

系统和状态相关变量


在information_schema数据库中,有些系统和状态变量不再维护。例如:global_ariables,session_variables,global_status,session_status表都已经删除,另外系统变量:show_compatibility_56也被删除,还有一些状态变量已经删除:slave_heartbeat_period,slave_last_heartbeat,slave_received_heartbeats,slave_retried_transactions。

mysql_plugin工具

该工具用来配置mysql服务器插件,现在已经删除,可以使用--plugin-load选项在服务器启动时候加载进来。

总结,以上就是5.7以前的旧有特性,这里做个参考,升级真遇到相应问题,再查资料进行替换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值