无忧启动论坛

标题: mysql 8.0.11 下 安装discuzX 3.4 已成功,7楼附解决办法 [打印本页]

作者: wuyou    时间: 2018-5-20 11:30
标题: mysql 8.0.11 下 安装discuzX 3.4 已成功,7楼附解决办法
在centos 7.5系统,apache 2.4.6 , php 7.25 ,mysql 8.0.11 下,无法正常安装discuzX 3.4。安装时,会出现一大堆错误,提示mysql 建表出错,与 mysql建表用了一些关键词有关。

Error:You have an error in your SQL syntax;check the manual that corresponds to your MySQL server version for the right syntax to use near 'admin char(15) NOT NULL default '0' ... 之类的错误。

根据提示, 估计 admin  groups system rank 这些词都是mysql 8系统保留关键词,修改相关文件建表语句,字段名加反引号 ``完成安装。

但打开首页时,论坛就直接乱了版面,图片也不显示,估计还有一些文件未修改。



上图中管理员入口也没有,也就是无法进入后台。
所有图片的路径都是在根目录下,说明程序无法获取图片路径参数。

------------------------------------------------------------------------------------------

目前已解决安装问题,方法见7楼:
作者: 邪恶海盗    时间: 2018-5-20 21:26
听说PHP7和MySQL8相对以前的版本都变动很大...
作者: wuyou    时间: 2018-5-20 21:39
邪恶海盗 发表于 2018-5-20 21:26
听说PHP7和MySQL8相对以前的版本都变动很大...

据说mysql 8的性能提升很大。
这次discuzX 3.4 在mysql 8 上的问题,八成是因为discuzX 对 mysql 的系统关键词上处理不当,没有对字段名进行转义处理,程序代码里面,有些全部进行了转义,有些没有,导致新的关键词出现时,程序出错。
作者: 邪恶海盗    时间: 2018-5-20 21:56
wuyou 发表于 2018-5-20 21:39
据说mysql 8的性能提升很大。
这次discuzX 3.4 在mysql 8 上的问题,八成是因为discuzX 对 mysql 的系统 ...

不要拿"性能"说事,绝大多数站点都用不着那点"性能",只有BAT这种级别的才会考虑,但是人家那级别的都是自己写自己优化的...
作者: wuyou    时间: 2018-5-20 22:40
邪恶海盗 发表于 2018-5-20 21:56
不要拿"性能"说事,绝大多数站点都用不着那点"性能",只有BAT这种级别的才会考虑,但是人家那级别的都是自己 ...

性能确实我们无法评测,不过对mysql 8 的好评很多。
对于技术迷来说,新技术总是很吸引人的,用来做研究还是不错的。
如果用于生产,需要反复权衡利弊。
作者: 邪恶海盗    时间: 2018-5-20 23:59
wuyou 发表于 2018-5-20 22:40
性能确实我们无法评测,不过对mysql 8 的好评很多。
对于技术迷来说,新技术总是很吸引人的,用来做研究 ...

生产环境一般是不动的...
作者: wuyou    时间: 2018-5-21 00:50
提供补丁文件下载,只要把补丁包文件放入官方原版文件2018.01.01版对应文件夹替换即可正常安装。
patch支持mysql8.zip (27.18 KB, 下载次数: 84)

也可以自己去修改原版文件

解决思路:其实很简单,就是给 admin rank system groups 这四个字段名加反引号(键盘左上角ESC键下方的` 这个键),不改动其他任何东西。

centos 7.5 shell命令行 文件批量替换:

如当前目录是网站的wwwroot
[root@t6 wwwroot]# pwd
/home/bbs/wwwroot

执行以下 shell 命令就可完成相关文件替换:
  1. sed -ri 's/ {2}([a-z0-9_]+)/  `\1`/g' install/data/install.sql uc_server/install/uc.sql
  2. sed -i 's/[^\`]\<\(rank\)\>/`\1`/g' source/class/table/table_forum_forum.php
  3. sed -i 's/[^\`]\<\(system\)\>/`\1`/g' source/class/table/table_common_usergroup.php
  4. sed -i 's/[^\`]\<\(groups\)\>/`\1`/g' source/class/table/table_forum_announcement.php
复制代码


------------------------------------------------------

下面是说明具体修改的内容,仅供参考。

1.
install/data/install.sql
uc_server/install/uc.sql

凡行首出现 admin  groups system rank 有关的加`` 反引号,也可以将所有的字段名加`号。

2 ./source/class/table/table_forum_forum.php:        

查找      
  1. DB::query("UPDATE ".DB::table($this->_table).' SET oldrank=rank,yesterdayposts=todayposts');
复制代码

修改为:
  1. DB::query("UPDATE ".DB::table($this->_table).' SET oldrank=`rank`,yesterdayposts=todayposts');
复制代码


3 ./source/class/table/table_common_usergroup.php:

查找
  1. return DB::fetch_all('SELECT * FROM %t WHERE (type=\'special\' AND system<>\'private\' AND radminid=\'0\') OR groupid IN (%n) ORDER BY type, system', array($this->_table, $ids), $this->_pk);
复制代码


修改为:
  1. return DB::fetch_all('SELECT * FROM %t WHERE (type=\'special\' AND `system`<>\'private\' AND radminid=\'0\') OR groupid IN (%n) ORDER BY type, `system`', array($this->_table, $ids), $this->_pk);
复制代码


4 ./source/class/table/table_forum_announcement.php:        

查找      
  1. return DB::fetch_first('SELECT * FROM %t WHERE type!=2 AND groups = \'\' AND starttime<=%d AND (endtime>=%d OR endtime=0) ORDER BY displayorder, starttime DESC, id DESC LIMIT 1', array($this->_table, $timestamp, $timestamp));
复制代码


修改为:
  1. return DB::fetch_first('SELECT * FROM %t WHERE type!=2 AND `groups` = \'\' AND starttime<=%d AND (endtime>=%d OR endtime=0) ORDER BY displayorder, starttime DESC, id DESC LIMIT 1', array($this->_table, $timestamp, $timestamp));
复制代码


目前尚未做完整测试,其他问题待发现。
作者: pcfan120    时间: 2018-5-21 14:59
很好的经验分享
作者: wuyou    时间: 2018-5-21 20:14
现在问题解决,小小问题,却也费了不少力。
作者: wuyou    时间: 2018-5-21 22:50
邪恶海盗 发表于 2018-5-20 23:59
生产环境一般是不动的...

生产环境是没有办法,受约束的东西太多,要考虑到方方面面。
新技术,需要一段时间来学习和适应。
作者: young1981    时间: 2018-6-15 22:26
谢谢,官方怎么不更新,哎
作者: mofly07    时间: 2018-8-2 21:21
谢谢分享,少走很多弯路
作者: 孤九    时间: 2018-9-24 00:14
门户的频道栏目的文章内容不显示,不知道我是不是个例
作者: linweiqin    时间: 2018-11-22 02:29
安装后还是出现你说的,打开首页时,论坛就直接乱了版面,图片也不显示,估计还有一些文件未修改。请问怎么解决?
作者: devilma    时间: 2018-11-22 14:49
学习了!!!
作者: xiaoxixi0407    时间: 2019-3-21 10:05
已安装成功,谢谢分享~
作者: xgchujun    时间: 2019-7-4 16:18
感谢,想试试mysql8
作者: hzlunix    时间: 2019-8-29 09:31
孤九 发表于 2018-9-24 00:14
**** 作者被禁止或删除 内容自动屏蔽 ****

一样的问题,但编辑时能看到内容,应该对应的数据表不是空的,可能是view模板的问题。
作者: pcfan120    时间: 2019-8-29 10:14
站长666……找半天7楼……发现好像在一楼的地方
作者: icabala    时间: 2019-11-13 14:41
终于解决问题了
作者: ully    时间: 2019-12-16 22:47
VIP会员 大元帅
作者: xr2020    时间: 2020-11-1 22:54
WO ZHENG xyao
作者: Alucn    时间: 2022-8-25 17:19
WO ZHENG xyao
作者: Alucn    时间: 2022-8-25 17:21

WO ZHENG xyao




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3