当初准备搭一个简单的项目,反复纠结mysql安装哪个版本比较好,网上各式各样的说法看得头都大了,一会说老版本稳定,一会说新版本功能多,抱着试试看的心态,先后在本地电脑和云服务器上换了好几个版本来回试。

最先下载的是8.4,看介绍说是长期支持版,想着新一点的长期支持版本总归不会差,安装包下载完,跟着教程一步步配置,刚装完启动数据库的时候还算顺利,建表、插入几条测试数据都没问题。可没过两天,把之前写好的旧项目代码连上去,问题就冒出来了,驱动版本对不上,字符集的默认设置和旧环境不一样,还有一些sql语法细微的差别,原来跑的好好的查询语句,直接抛出报错,对着日志翻了大半天,改驱动、调整连接参数,断断续续调了一个晚上,勉强能连通,但时不时就出现莫名的连接超时,心里总悬着一块。

身边一起做开发的朋友看到我卡在这,劝我换成5.7,说他一直用这个,很少出怪事。没多想就把8.4卸载干净,清理残留的配置文件,重新装5.7。安装过程倒是省心不少,项目代码不用大幅度修改,连接也稳定,日常简单的增删改查都能正常跑。就是偶尔在测试新特性的时候发现,很多新版本自带的函数,5.7里面根本不支持,想试一些窗口函数,只能换别的写法,写起来要多写不少冗余代码。

那段时间就卡在两难里,用8.4,老项目适配麻烦;用5.7,想体验新功能又受限。后来又临时装了8.0在虚拟机里面单独测试,8.0的安装步骤比8.4要熟悉一些,网上能搜到的问题解决方案也更多,装好之后,旧项目的兼容问题比8.4稍微好一点点,但权限那块的加密规则还是要手动调整,不然客户端连不上。

虚拟机里的8.0。

那段时间反复来回装删,电脑里堆了好几个安装包,每次卸载都担心还有残留目录影响下一次安装,有时候明明卸载完了,再次启动服务的时候,还能读到旧的配置,导致端口冲突,要手动去找到my.cnf文件删掉,来回折腾耗费大量时间,本来计划一天做完的环境搭建,硬生生拖了好几天。慢慢才意识到,不是单纯挑一个所谓最好的版本就行,要看手上项目本身的情况,只是这个道理是踩了不少操作之后才感受到的,不是一开始就能想明白。

有一次甚至想着干脆直接上最新的非长期支持版本,看更新日志新增了不少东西,差点就下载安装,好在临时停手,翻了下用户反馈,不少人说新版本会遇到一些还没修复的小bug,不适合拿来跑项目,最后放弃了这个想法。

到最后,云服务器上跑正式的旧项目就保留5.7,本地虚拟机单独装8.0用来学习和写新项目,两个环境分开,互不干扰,没有强求只用一个版本。这么分开部署之后,不用再反复卸载重装数据库,终于不用在版本选择这件事上继续消耗精力。

只能说这是我当时的选择,每个人手里项目、服务器环境不一样,感受肯定不一样,别人合适的版本,换到自己机器上未必就能顺利跑起来。

那天忙完关掉虚拟机,桌面上还躺着几个没删掉的mysql压缩包,懒得清理,直接最小化浏览器去做别的事了。

mysql安装哪个版本比较好,我前后更换版本折腾很久,老项目适配优先选5.7,学习新项目可以尝试8.0系列,8.4长期支持版会有旧代码兼容难题。