洞中方一日,世上已千年

wordpress 的升级提示看的我心烦,然而因为虚拟主机不支持最新版的 PHP 7.2 ,所以一直点不了升级,升级主机又肉疼,因此也更新疲懒

今日惊觉阿里云的共享虚拟主机(没错,我就是穷扣扣的用的这个)支持 PHP 7.2 了

aliyun-php7.2.PNG

美滋滋升级,根据提示稍后2-5分钟,wordpress 终于提示我可以升级了

然而…

upgrade-504.PNG

升级失败,网关超时,网上提到了一些修改服务器和数据库sql的操作,随后我注意到 mysql 提供了 5.7.25 的升级,因此打算把 mysql 也升级一番,不用新版不舒服斯基

由于升级 mysql 过程中将会重置数据库,所以去阿里云的DMS里进行了数据库导出,保险起见也去 wordpress 里进行了导出操作

DMS-export.PNG

wordpress-export.PNG

随后去后台变更了数据库

mysql-5.7.25.PNG

几次确认后,成功变更数据库,数据库的地址、用户名都变了,密码重置,然后在导入中,报了一个错误

根据查询,原来包括 comment_date 在内的多个 datetime 数据的默认值被设置为了 ‘0000-00-00 00:00:00’ ,而 mysql 5.7 中 sql_mode 参数中包含 NO_ZERO_IN_DATE 和 NO_ZERO_DATE

NO_ZERO_IN_DATE 意为日期和月份不能为零(但是支持年月日都为零)

NO_ZERO_DATE 意为不能插入全零日期(即支持年月日中任意一位不为零)

由上,应当去掉 NO_ZERO_DATE 即可,然而阿里云的虚拟主机并没有给SUPER权限,所以不能使用 set global ,只能在导入的sql文件的第一行,插入一句

来临时修改sql_mode的配置,这个配置将只在当前会话生效

随后即可导入成功,最后去 wordpress 的 wp-config.php 文件中修改数据库的地址、用户名、密码,这次升级就算完成了

当然,事后测试发现还是不能升级,再继续排查问题吧。

最后使用覆盖方法离线升级,搞定收工

发表评论

电子邮件地址不会被公开。