本文实现功能NeX
解决在MySQL8.0安装discuz报错run_sql_errorNeX
如果想直接看解决结果,直接去看解决问题目录NeX
问题环境
-
VMware虚拟机NeX
-
Centos7.3NeX
-
PHP7.0NeX
-
MySQL8.0NeX
-
NGINX1.14NeX
-
Discuz3.4NeX
问题还原
本地环境为PHP5.6+MySQL5.6在安装discuz没有任何问题。NeX
在虚拟机的centos上出现以下问题MySQL的表无法创建,安装报错NeX
NeX
宿主机使用Xsheel和Ftp
由于在centos的终端截图不方便,下面的所有环境修改都会在xshell上进行操作,并且直接在宿主机上访问。NeX
关于配置如何使用xsheel连接虚拟机NeX
连接模式为NAT,并且已经安装了toolsNeX
NeX
使用xsheel连接,在虚拟机使用ifconfig查看ip地址NeX
NeX
然后进行连接,需要输入账号密码,账号密码就是你的虚拟机账号密码NeX
NeX
连接成功就是以下样子,可以输入PHP -v来查看PHP版本信息NeX
NeX
还有一个就是ftp,由于需要传输点东西所以也使用了宿主机的ftp连接了虚拟机。同理也是输入ip地址并且端口为22NeX
NeX
连接成功后就可以获取到虚拟机的文件NeX
NeX
解决问题
这个问题的根源就是在MySQL的版本上。discuz支持的版本为PHP5.3.但是所有的数据库文件都是在MySQL5.5上创建的。所以就会造成字符集乱码的情况。NeX
这个时候我们打开/etc/my.ini,这个是默认的一些配置,下面的那个mysqldump不用管,那个是咔咔在之前配置MySQL主从复制以有数据的情况配置的。NeX
NeX
在这个文件里边加上以下代码NeX
1NeX 2NeX 3NeX 4NeX 5NeX 6NeX 7NeX |
NeX
NeX
|
NeX
在mysql8.0所有的存储引擎都是innodb,所以这里直接默认设置为innodbNeX
字符集设置为utf8NeX
default_authentication_plugin修改密码验证插件NeX
经过以上配置完在来测试一下NeX
测试
地址栏输入http://192.168.254.130/forum/install/index.php,然后一直下一步即可。在这里输入你的数据库账号密码NeX
NeX
点击确认,就不会出现报错了NeX
NeX
访问论坛就可以了NeX
NeX
在查看数据库NeX
NeX
查看表数一共是292张表NeX
NeX
然后来到本地之前安装好的数据库里查看数量也是292NeX
NeX
总结
以上就是discuz在MySQL8.0的安装错误的方案,虽然就几行配置,但是也不是一时半会就可以解决的。NeX