然后打开论坛首页,显示 116错误,具体错误代码如下: Discuz! Database Error (1146) Table 'xxx.common_syscache' doesn't exist SELECT * FROM common_syscache WHERE `cname` IN('setting','style_default','cronnextrun') PHP Debug No. | File | Line | Code | 1 | admin.php | 25 | discuz_application->init() | 2 | source/class/discuz/discuz_application.php | 66 | discuz_application->_init_setting() | 3 | source/class/discuz/discuz_application.php | 686 | loadcache(Array) | 4 | source/function/function_core.php | 702 | table_common_syscache->fetch_all(Array) | 5 | source/class/table/table_common_syscache.php | 63 | discuz_database::query(%s) | 6 | source/class/discuz/discuz_database.php | 136 | db_driver_mysql->query(%s, false, false) | 7 | source/class/db/db_driver_mysql.php | 153 | db_driver_mysql->halt(%s, %d, %s) | 8 | source/class/db/db_driver_mysql.php | 224 | break() | 查找相关资料,得到结论是Discuz通过后台备份数据后,搬家过程中没全新安装程序,而直接进restore.php页面导入数据,就会出现各种table缺失的情况。
解决办法很简单,进数据库后台重建一下数据表就行(可以ssh 用命令进mysql操作,也可以进phpmyadmin操作)。 解决如下:1. 先找到官方的安装文件,找到相关表的创建语句:具体文件位置(Discuz_X3.2_SC_UTF8\upload\install\data\install.sql),找到相关的语句,我这里是: 2. 进phpmyadmin执行语句:得到错误提示码: MySQL 返回: #1064 - 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 'TYPE=MyISAM' at line 7
竟然说是语法错误,再次查找相关资料,得到的结论是: 这个错误出现是由于MySQL创建表的写法 TYPE=MyISAM 太古老了,在MySQL 5.6.20上已经不支持了,这个应该在MySQL 5.1后的相关版本已经取消了支持,具体参考链接http://bugs.mysql.com/bug.php?id=17501,只能将mysqldump导出的脚本文件里面的TYPE=MyISAM 全部替换成ENGINE=InnoDB后,才会导入成功。 修改后再次执行,成功如图: 3.都修复好后,登录后台,检验一下:发现不少错误:有表缺失,有些刚才建的表字符集不正确。 成功登录,访问也正常,至此问题一一解决,后面的修复都是重复上面的过程,不再累述。
|