IITT网络服务中心

标题: 解决Discuz! 恢复数据时出现 1146 表不存在的错误 Read more: http://zctou.com/?... [打印本页]

作者: admin    时间: 2020-12-3 02:34
标题: 解决Discuz! 恢复数据时出现 1146 表不存在的错误 Read more: http://zctou.com/?...
然后打开论坛首页,显示 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.FileLineCode
1admin.php25discuz_application->init()
2source/class/discuz/discuz_application.php66discuz_application->_init_setting()
3source/class/discuz/discuz_application.php686loadcache(Array)
4source/function/function_core.php702table_common_syscache->fetch_all(Array)
5source/class/table/table_common_syscache.php63discuz_database::query(%s)
6source/class/discuz/discuz_database.php136db_driver_mysql->query(%s, false, false)
7source/class/db/db_driver_mysql.php153db_driver_mysql->halt(%s, %d, %s)
8source/class/db/db_driver_mysql.php224break()
查找相关资料,得到结论是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.都修复好后,登录后台,检验一下:
发现不少错误:有表缺失,有些刚才建的表字符集不正确。
成功登录,访问也正常,至此问题一一解决,后面的修复都是重复上面的过程,不再累述。







欢迎光临 IITT网络服务中心 (http://service.iitt.cc/) Powered by Discuz! X3