关于 phpStudy 升级 MySQL 版本这件事
又是折腾了好几个小时。
phpStudy
这是我用了很久的一个集成环境,最早的时候听了建议下载来用,也一直没换。伴着我度过了自己写项目,实践课大作业等等。总体来说还挺好用的,不过我使用的是 2018 版本,现在已经出了很多新版本。
它的优点有面板简洁,操作方便,集成完整,包括了 php
、服务器和数据库,并且可以在不同版本之间切换。除了 数据库 。
升级需求的由来
一切源自于我学习 Django ,写项目试图折腾一下无视图开发。
首先搜索了 RESTFUL 风格的 Django 开发,搜索到了一个库,但是我粗略地看了看,觉得太麻烦了。于是放弃,继续寻找原生 Django API 开发。在我的理念里,MVC 式开发就是在处理好数据后把数据塞进视图模板进行渲染,将页面返回给浏览器。而无视图开发,则是抛弃了视图模板,直接返回一些字符串文本而已。
翻了一下确实找到了,并且示例切换了 MySQL 数据库,而这,就是我那几个小时折腾的由来。
我切换了自己项目的数据库引擎,配置好账户、密码等等。然后我敲下数据库迁移命令。
也就报了几十行错误吧,滚轮滚滚还是能翻完的。
错误定位在此处:
可以看出此处出现了语法错误,我很迷惑,于是我翻找了 Django 官网的数据库连接教程。Django 提出可以定义文件来写入参数,我试了试,报了另外一个错。于是又回头去查这个错误的原因。
溯源很简单,网络给出了一个回答,曰:数据库版本过低,需要大于 5.x 以上。我大吃一惊,赶紧检查了 phpStudy 自带的数据库版本。就差一点点,就过线了。( 此处假装有图 )
没办法,我只能去找找怎么给 phpStudy 更换数据库版本。我隐约嗅到一丝要荒废时间的味道。因为许久之前,我忽略了 phpStudy 自带了一个数据库,而转头又去下了一个用。后来导致 phpStudy 无法面板启动 MySQL,那时候真是弄得焦头烂额。
焦头烂额的下午
首先导出数据库内的数据,临时存储在桌面。
备份旧的 MySQL 的 my.ini 文件。
备份 phpStudy 的 MySQL 文件夹。
下载新版本数据库,解压到对应位置。
初始化数据库,安装数据库。
启动~
命令行亲切地提示我无法启动,于是我依着网上给 my.ini 中塞入了 skip-grant-tables
这一行。
不错,确实能启动了,然后我去修改密码。
交互命令行也亲切地抛出了错误。
提示没有 mysql.user
这个表。
于是我再次寻找成功更换的例子,并且重新再换了一份 MySQL 。
此链接 给了我较大帮助,但是依然存在一些问题。
首先是文中关于 my.ini
这个文件名的笔误。其次,我的 5.7.31 版本中 my.ini 依然需要放在 MySQL 路径下,放在 bin
当中并不起作用。关于卸载 MySQL 服务的命令也有一些问题。应该是:
mysqld --remove xxx # xxx 为服务名
我猜测是我的数据库服务名不是默认的,执行 mysqld -remove
会报错服务不存在。
依照文中给出的基础步骤。
- 备份
- 下载新版本
- 卸载旧服务
- 初始化服务器
- 安装新服务
- 修改密码
可以实现数据库的正常安装。
但是可能会导致 phpStudy 无法正常启动数据库。
原因很简单,数据库执行安装命令默认安装的服务名为 MySQL
。
但 phpStudy 启动的服务名为 MySQLa
,此处正确的做法是在执行安装命令时:
mysqld --install MySQLa
那么,就会得到我们需要的服务。
关于启动数据库报错 1055 的问题。
最后
我没有进一步查阅关于 MySQLa
这个服务名是自定义的还是默认给出,是否可以自定义。