**phpstudy对mysql管理还是相当不错的,容易安装,小巧易用,最近在学习python的Django框架时,遇到了一个大问题:Django 2.X版本需要mysql 5.6版本及以上,否则不能执行数据库迁移**
由于phpstudy很糟心,不能选择mysql的版本或者升级,所以需要手动强制升级mysql。
1、需要先下载mysql5.6版本以上的压缩包;下载地址为:Mysql官网地址
本机的系统是Windows7 64位的 所以下载了名称为 Windows (x86, 64-bit), ZIP Archive 版本的Mysql压缩包
2、在下载的过程中先把phpstudy的MySql(本人的MySQL目录地址为 D:\phpStudy\PHPTutorial\MySQL)文件打包压缩,并在MySQL\bin目录下使用cmd
命令执行 mysqld -remove 命令
(图片来源于网络)
3、清空D:\phpStudy\PHPTutorial\MySQL目录下所以文件,在此之前如果数据库里有数据,请记得备份!
4、将刚才下好的新版本的Mysql解压包下的文件移动到D:\phpStudy\PHPTutorial\MySQL下。(如果此时文件夹里没有my.ini
文件,将之前的Mysql文件夹里的my.ini
拷贝过来)
5、修改my.ini
:
[client]
port=3306
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir="D:/phpStudy/PHPTutorial/MySQL/"
datadir="D:/phpStudy/PHPTutorial/MySQL/data/"
character-set-server=utf8
default-storage-engine=MyISAM
skip-grant-tables
#支持 INNODB 引擎模式。修改为 default-storage-engine=INNODB 即可。
#如果 INNODB 模式如果不能启动,删除data目录下ib开头的日志文件重新启动。
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
max_connections=512
#innodb_additional_mem_pool_size=2M
#table_cache=256
以上为本人的my.ini
内容,其他博客也有说只需如下内容即可
[mysqld]
port=3306
skip-grant-tables
basedir="D:/phpStudy/PHPTutorial/MySQL/"
datadir="D:/phpStudy/PHPTutorial/MySQL/data/"
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
PS:skip-grant-tables 是必须加上的
6、安装Mysql服务
在D:\phpStudy\PHPTutorial\MySQL\bin目录下以cmd命令执行 mysqld install
(网上有说需要先执行 mysqld --initialize 初始化数据库,本人执行了也没什么反馈,觉得在本人电脑系统中没有什么作用,当然执行了也没啥问题)
(图片来源于网络)
然后再执行 net start mysql命令,启动mysql服务
(图片来源于网络)
正常情况下是如此,但是本人的mysql服务是无法启动
(心中一万匹草泥马飘过)
看了几次别人写的升级过程,经过对比下,木有什么问题呀,又是草泥马飘过,不会就问度娘,度娘还是有用的!参考网站为:
https://segmentfault.com/a/1190000018231508
在bin目录下使用cmd命令:mysqld --console 查看有显示“Erro”的地方的行:
解决方法:
其实很简单只需要在my.ini配置文件中注释掉几个东西就行,如上图是报:unknown variable 'table_cahe=table_open_cache'
就在my.ini配置文件中注释 #table_cache=table_open_cache
再无法启动,再次查找错误,本人配置注释了两个:innodb_additional_mem_pool_size 与 table_cache
然后就能顺利的启动MySQL服务了!
那么问题又来了,O(∩_∩)O,在PhpStudy工具中可以启动Apache无法启动MySQL!!!!!!!!又几十万个草泥马!
解决方法:
因为之前升级重新装过Mysql,导致系统服务中有MySQL服务,会与PhpStudy的MySQLa服务冲突。所以可以直接
在cmd命令行下输入:sc delete mysql 即可删除