找回密码
 注册
查看: 508|回复: 8

(1146) Table 'bbs168xcn.common_member_archive' doesn't exist最新解决办法

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2023-8-17 12:40:37 | 显示全部楼层 |阅读模式
(1146) Table 'bbs168xcn.common_member_archive' doesn't exist最新解决办法
& _) d5 Y- V3 S* \7 YDiscuz! Database Error(1146) Table 'bbs168xcn.common_member_archive' doesn't existSELECT COUNT(*) FROM common_member_archive
7 l7 H8 z' z' J) s

% l4 @# `; C& `  w! R+ GPHP Debug; K3 x$ |1 e( J) @% j
No.FileLineCode
1misc.php98require(%s)
2source/module/misc/misc_stat.php29getstatvars(%s)
3source/module/misc/misc_stat.php91call_user_func(%s, %s)
4getstatvars_basic(%s)
5source/module/misc/misc_stat.php101table_common_member->count()
6source/class/table/table_common_member.php172table_common_member_archive->count(%d)
7source/class/table/table_common_member_archive.php48discuz_database::result_first(%s, Array)
8source/class/discuz/discuz_database.php117discuz_database::query(%s, Array, false, false)
9source/class/discuz/discuz_database.php136db_driver_mysql->query(%s, false, false)
10source/class/db/db_driver_mysql.php153db_driver_mysql->halt(%s, %d, %s)
11source/class/db/db_driver_mysql.php224break()
. g7 _6 d5 E  F7 P- k2 A
+ @! s! t" \$ ]. [. N( Q

9 [- z8 f3 O6 q: M) |" T5 P! H4 s! c- J4 g
' |# W5 v! z. J: w: x# e
2 S7 e) H: O9 Z2 U& E* H! R7 L" b3 x
以前都是进入数据库删除数据:
7 A0 [8 Z0 _* w/ S* Zmysql> use bbs168xcn
2 X0 q; C2 c7 g5 \. `6 A& {9 rReading table information for completion of table and column names
# }4 R6 A! [4 h  W5 s0 D; G! nYou can turn off this feature to get a quicker startup with -A! b' M+ ^. E1 E9 s' R  r

; l, s( z2 y' t8 G# _  L. J0 EDatabase changed
. J. m, d! [4 h) F7 F/ Dmysql>  DELETE FROM `common_setting` WHERE `skey` = 'membersplit';
+ O% o1 O: P- FQuery OK, 1 row affected (0.00 sec)
+ F8 q/ {3 V" L: k9 L  C4 ~' b9 y& p1 P: O
mysql>
1 j3 I% i+ b; K. s
+ J) X7 L) t' ~$ }* H* B感觉效果不是很好。+ M1 j, v! I8 E6 H% u

! O9 J4 @( S5 h3 c以下方式比较好的解决这个问题:
" O# ?  B4 o9 J登录到后台>>>>选择论坛>>>>点击板块管理>>>>>随便选择一个板块名称,要求是二级版块,一级版块好像有些不行 >>>>
$ J3 v7 ?) K3 a; t) K点击设置复制>>>>>出现的两个框分别是 目标版块项目选择  .>>>>目标版块选择全部(使用crtl+a) >>>>项目选择使用  >>>允许使用【img】代码  >>>点击提交。刷新页面即可。
4 y* s9 m' T- A5 s7 p. x  D  e

$ f& o7 f6 a, A* j  X! f) d3 c3 J4 Q

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-8-19 08:17:52 | 显示全部楼层
经常出现这个问题,怎么回事?* d0 @0 x6 L+ L

$ b( V9 Z9 I4 m) LDiscuz! Database Error
9 x0 @! M: j, B0 H& N(1146) Table 'bbs168xcn.common_member_archive' doesn't exist
' z7 F* o4 c# e# |/ P1 v: [SELECT COUNT(*) FROM common_member_archive
4 r0 r! [/ C  J# v( \  qPHP Debug5 d7 W" g) N% K$ y/ {0 r

: U# t* f6 ?5 f$ R& l  @No.        File        Line        Code: c# h' v* P! z' V% T) C/ D
1        misc.php        98        require(%s)
% p' J* F, _, a2        source/module/misc/misc_stat.php        29        getstatvars(%s)
9 X/ b! U7 U3 S: |: ]% y3        source/module/misc/misc_stat.php        91        call_user_func(%s, %s)
, g2 P' X# F8 ^; m2 X# |" e) z( W4                        getstatvars_basic(%s)
% Z2 L$ _) e. ?1 f2 x4 M, U5        source/module/misc/misc_stat.php        101        table_common_member->count()/ s# ?$ Y! }+ u# k7 N
6        source/class/table/table_common_member.php        172        table_common_member_archive->count(%d)
- s1 o; r; S+ }- Q, V7        source/class/table/table_common_member_archive.php        48        discuz_database::result_first(%s, Array)
) Z6 b  R; n5 [  A( z, T5 s9 Q' h8        source/class/discuz/discuz_database.php        117        discuz_database::query(%s, Array, false, false)
+ T! N/ q: `2 u% I9        source/class/discuz/discuz_database.php        136        db_driver_mysql->query(%s, false, false)1 e1 f, T, `# m9 K
10        source/class/db/db_driver_mysql.php        153        db_driver_mysql->halt(%s, %d, %s)# {, F1 K* I5 f- F0 k  B4 L
11        source/class/db/db_driver_mysql.php        224        break()+ k, L+ f9 v& }) W" c

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-1 17:17:26 | 显示全部楼层
如果是数据表损坏请尝试修复表
& B9 P# T8 U: O, P* U) B$ Prepair table tablename
/ O( n2 g& R8 n5 o% Z- n- L! h

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-1 17:17:37 | 显示全部楼层
mysql> use bbs168xcn8 L& a) b! ?' F) c" K) b
Reading table information for completion of table and column names
0 a0 t. @3 m& [You can turn off this feature to get a quicker startup with -A
! O1 j* k# ~) u8 M7 u+ P' n/ `8 w. F0 C2 l5 Q4 @
Database changed
9 K) G" y, ]9 A  z! y0 omysql> delete from `common_setting` where `skey`='membersplit';
/ t5 B" E5 g/ wQuery OK, 0 rows affected (0.00 sec)
$ j7 U# O) y7 O8 r$ u7 |
3 c2 H( D! o! a0 hmysql> repair table common_setting;$ o6 n4 E; _6 K/ K% `
+------------------------------+--------+----------+----------+4 q$ L! s/ y  M0 e$ d
| Table                        | Op     | Msg_type | Msg_text |
5 o# x# [  g2 }+------------------------------+--------+----------+----------+$ Y0 O! g' h8 K- p% m% @
| bbs168xcn.common_setting | repair | status   | OK       |
# r% Z3 [- C) _  z2 r& j3 j, E+------------------------------+--------+----------+----------+
7 o+ d/ _( O+ a1 row in set (0.00 sec): h# u7 c8 l3 r9 C7 W

( @+ j  c1 }2 |2 v  mmysql> select * from common_setting where 'skey'='membersplit' ;
) _& l  \" @! T2 IEmpty set (0.00 sec)
- p, T! W+ W& F" \5 n  H1 B& ?9 `
4 k" ~, ?7 {* c( M' v5 Umysql> delete from `common_setting` where `skey`='membersplit';( Y8 o0 s7 I. |2 T3 r: A& M
Query OK, 0 rows affected (0.00 sec)+ L9 h4 K8 ]4 N1 X) w6 ?% ^

+ m& C7 f1 I& Kmysql>
/ X% ^: A! p+ F2 ]; s) E

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-1 18:05:56 | 显示全部楼层
问题现象
3 q3 c0 L7 L: g3 E+ i! N在重启RDS MySQL实例后,进行表相关操作时,提示如下错误:/ M7 R1 G  l& \6 }
% y" @" Y! u. M( d
ERROR 1146 (42S02): Table 'xxx.xxx' doesn't exist5 J& I# D( ]5 q! E5 m- v6 Q7 J
同时,在error log中可见如下记录:: p, F9 e9 T/ W9 P4 `8 v8 Y% O
6 M' b: Z) P1 v% y( T) }& ]
[Warning] InnoDB: Load table `xxx`.`xxx` failed, the table has missing foreign key indexes. Turn off 'foreign_key_checks' and try again.
. R$ g! ?0 r: F' K; I% i% s[Warning] InnoDB: Cannot open table xxx/xxx from the internal data dictionary of InnoDB though the .frm file for the table exists.
' |: V7 N8 _: A可能原因" s: E+ m) m  j; j9 K1 ~
MySQL中添加外键需要满足相应条件和限制,详情请见官方文档FOREIGN KEY Constraints。
3 x; I+ ?0 Z6 b7 Z' N: O3 x
7 s8 f& ^) m0 O. {9 ^" aMySQL的外键限制检查是通过变量foreign_key_checks来控制的,该变量可以在RDS MySQL实例运行时修改,不需要重启实例,默认值为ON。若将foreign_key_checks设为OFF,除特殊情况外(详情请参见官方文档FOREIGN KEY Constraints),将关闭外键限制检查。
, C9 _& ?# I8 [; L0 C" W
9 g7 p& t' _& L如果在关闭外键限制检查后,对外键进行了变更使其不满足外键限制,在RDS MySQL实例运行时不会报错。在重启实例时,由于重启时froeign_key_checks默认开启,InnoDB打开表时会进行外键限制检查,此时会报错。
2 t5 B( l$ y& D' d4 W* v/ F2 ]+ t7 W0 ?7 N3 o; Q0 [( @
常见的情况有以下两种:
$ {# E9 s% C; J  M6 Q
5 Y" {# k( m% U更改了父表和子表外键相关列的字符集' }* g8 V  X2 j( o* m* v& F8 P
" S& v9 `7 k0 K
MySQL 5.6、5.7、8.0允许在foreign_key_checks设置为OFF的情况下,修改父表和子表外键相关列的字符集。实例重启以后:
0 L0 l0 o; E$ c! p6 I
* ^1 A0 @- C0 O. \3 JMySQL 5.6、5.7会在error log中提示warning,同时无法使用父表。+ |+ L/ a- a! o1 q3 k: D

2 B0 }) y1 [2 R. CMySQL 8.0不会在error log中提示warning,可以使用父表。; i2 z, `2 |, e
, Q+ R2 l0 {! R- F- o
删除了父表和子表外键相关列的索引3 w1 {# n) a" C3 h
/ E/ S/ V3 n2 O) G+ c6 [. D: Q6 _
对于MySQL 5.7、8.0:不允许在foreign_key_checks设置为OFF的情况下,删除父表和子表外键相关列的索引。% T! u# Z) e- \

, N  `/ W6 D/ t  V4 d) C对于MySQL 5.6:允许在foreign_key_checks设置为OFF的情况下,删除父表和子表外键相关列的索引。删除相关列索引后,重启实例会提示warning,同时被删除索引的表无法使用。
' q3 B7 T' H9 x6 S0 q6 ]% K) e1 t6 O/ a( n8 Z* T  A" n/ Q* q
解决方案( {4 d3 G% s5 c" m
对于修改字符集导致的问题,将foreign_key_checks设置为OFF,将父表和子表外键相关列的字符集修改一致。
* l/ V5 a  Y# s* z. E) I: o) ?) D3 {4 M
对于删除索引导致的问题,将foreign_key_checks设置为OFF,重建索引。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-3 07:12:05 | 显示全部楼层
1、例如,mysql数据库的表内容太大,超过10G可能会影响discuz论坛的运转。
2 [3 c: s! m! S- c1 a0 r! N  z5 O0 n, o* Z% D1 u! ]7 n  _
2、这种状况能够经过子数据库的方法来处理。有关详细信息,您能够搜索discuz官方网站以查找相关信息。* V- L, w3 e2 h0 \# n
; v0 y* _; n+ }+ x
3、数据库装备过错,有时可能是主机移动,数据库移动等,导致数据库信息填写不正确,或许旧数据库信息未及时更新,例如数据库用户名,暗码,数据库表填充过错。) V, `7 h& u# W  f' E" G& ~8 C( G) P

3 L) m4 G& K# n$ X! v+ X4、您能够修正相关的数据库信息,您能够在config目录中找到config目录,修改数据库信息装备文件。Discus!3有三个参阅装备文件。仔细检查数据库装备和其他装备是否是最新的。% x0 @' T% k' p5 T% y/ d

6 l5 g1 D% w/ ]/ W装置目录/config/config_global.php装置目录/config/config_ucenter.php装置目录/uc_server/data/config.inc.php。有关详细信息,请参阅discuz官方文档。
9 O% m3 k0 c) m& r: R, p
# t! }& @" c1 N& c5、数据库没有运转。2 m0 @3 _- [, {) |5 b6 U

1 ?. D# d' g. C; v% X6、检查主机的mysql数据库程序是否正在运转或已关闭。假如它是虚拟主机,您能够联络空间提供商以将其打开。假如虚拟主机不支持mysql数据库,则能够经过替换主机或空间提供程序来处理此问题。2 G! z; @) {8 V7 z
图片[1]-discuz! database error什么意思(如何解决)-小白之家,discuz!databaseerror如何解决,原因一:数据库表太大0 V! R" o6 c! A
9 H* [9 [: {& d& \
比方mysql数据库的表内容太大,超过10G就有可能会影响discuz论坛的运行。, z. m3 |% l' c- |7 \
  x$ g2 X. Z( n! ~' K  ~
Discuz!DatabaseError是什么原因,怎样修正/ Q. T6 i" b' ~

+ v8 c' ?1 M' j; h这种状况能够经过对数据库分表的方法来解决。! _1 e" g+ w; H8 }6 ^) R/ u, {
" ?( W5 u) x5 {4 w, O. b1 k, |
原因二:数据库装备过错4 K% s( t$ f& F& O5 v2 W

% t9 ?" V6 U. d+ ~9 |* j5 b有时候可能是主机搬迁、数据库搬迁等,形成数据库信息填写过错,或旧数据库信息没有及时更新等,比方数据库用户名、密码、数据库表填写过错等。
4 g7 {9 L+ ^) t* G& e: U+ f9 W, D- V  Q! L1 l# h' o9 O
能够批改一下相关数据库信息即可,能够找到config目录,修改config目录中的数据库信息装备文件。Discus!3的参考装备文件有三个,仔细检查一下里面的数据库装备和其他装备是不是最新的。安装目录/config/config_global.php安装目录/config/config_ucenter.php安装目录/uc_server/data/config.inc.php。详细可查阅discuz官方文档。0 ?  J. k( i% x6 z( X' E
; d& M$ t1 V# I6 @8 s
原因三:数据库没有运行( O# r6 R( g: X+ M2 C

9 v" f6 {. q/ G4 x检查一下主机的mysql数据库程序是否正在运行或已经关闭  {" E+ C' ^+ ]8 E  C/ q
3 H3 v% @5 z( T
原因四:数据库过错
* G/ k5 a& M$ d3 C. Z7 ?
1 `; c, ^2 v( }! P$ O可运用discuz官方小东西Discuz!Tools来对数据库进行修正。到discuz官方下载tools东西,解压上传到网站相关目录,然后打开链接、输入密码,修正数据库->一键修正就行了。修正完成记得删去Discuz!Tools相关文件。' x) C/ |6 m% m" S

5 x4 l" O# m2 h- i  `& D- B" [Discuz!DatabaseError是什么原因,怎样修正
$ K2 a  r2 n  u" m1 t1 |. X3 R4 `3 }1 U5 N5 t
原因五:数据库繁忙5 _3 o, r, V. D( p: j

2 l4 `! R9 X# L能够登录discuz后台,开启【贴子缓存】、【主页缓存】,能够缓解数据库繁忙的问题。0 Q) x0 V$ _- P- ^- |- L

- k! d3 M9 @& a/ x* F! k7 \; a9 bDiscuz!DatabaseError是什么原因,怎样修正# e5 Z9 r) Q; z, |6 ]
$ O* C" K/ \. p- B" y
详细可参阅discuz官方性能优化的文档。0 j7 V4 p- i8 x: ?3 \- Q

( z) H& o$ g" }8 x7 U) IDiscuz!DatabaseError是什么原因,怎样修正
! n# A8 u: C0 y# C) ?2 P2 B6 a$ w1 O2 k
原因六、主机内存不够、不稳定
& b6 }9 }- ~/ ^; u
  L0 ~+ \1 D0 X4 ]4 }+ e; ^. l" A也有可能是主机不太稳定,可能是主机内存过小,杀死了mysql进程。
' m% d' v7 j, O1 o, ^1 `4 U
5 B# A3 z( @( Q& Q$ v" [Discuz!DatabaseError是什么原因,怎样修正; `/ Z: U; X% l% J' L) `
8 b; U8 N. P* x  P' S# C5 k
原因七:可能是相关软件版别太旧0 ^) O% J  s& X3 R

+ W; ^6 t7 x2 b2 F2 S; X/ ?比方discuz版别、mysql数据库的版别是不是最新的、php的版别,服务器是否开启相关权限、php权限,是否支撑discuz系统等?

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-3 07:21:43 | 显示全部楼层
解决方法:
' n2 r& T% C) k* I
1 u8 f0 [) G9 s登陆后台,站长—数据库—升级(Discuz! 数据库升级 - 请将数据库升级语句粘贴在下面:)中执行语句
; @& X6 ~/ a! _, }5 C; N) P# j' m5 a1 Z
DELETE FROM `common_setting` WHERE `skey` = 'membersplit'; 0 @. d+ V% j1 m* i$ o
就可以了,若没有找到执行语句的输入窗口 则修改config/config_global.php 当中的 $_config[admincp][runquery] 设置修改为 1 (为了安全执行完该语句后 确认解决了1146错误后 再将配置该回来 )  刷新后再输入执行。* e; H. |* E4 c9 ~- U( k
- x+ {, V8 t, O' i
提示:为了数据安全执行该语句前建议备份数据。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-3 07:25:28 | 显示全部楼层
论坛后台>>>站长>>>>数据库>>>  升级>>>>>   Discuz! 数据库升级 - 请将数据库升级语句粘贴在下面: ) G$ o* [+ y+ d6 |

: n4 C3 }0 J% o输入:) Q6 y% I5 q6 H$ y1 p2 a! F
DELETE FROM `common_setting` WHERE `skey` = 'membersplit'; . Z9 Q* k1 w* `9 \1 W$ _# u
执行即可。' |; s$ a6 @" A5 F# D- `
然后刷新页面即可。
9 b2 u( i* s/ p6 d/ y
( s  @- @$ B7 }! _% }' K, F7 `技巧提示
7 b9 k1 J9 U" c; _& b; p9 p您可以通过修改 /source/admincp/admincp_quickquery.php 来添加常用 SQL 操作进行功能扩充。
% p" C- S& ^. \+ V6 O出于安全考虑,Discuz! 后台默认情况下禁止 SQL 语句直接执行,只能使用常用 SQL 当中的内容,9 k0 G% O" Z/ J' y9 g
如果您想自己随意书写 SQL 升级语句,需要将 config/config_global.php 当中的 $_config[admincp][runquery] 设置修改为 1。
9 [6 C0 T$ F$ _/ y9 g, F0 n( n8 J' ]* l) V" v' E, L

0 N$ n: X, t6 Y" _( IDiscuz! 提示
5 G7 o/ Q) \" o4 Q& sDiscuz! 数据结构升级成功,影响的记录行数 0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-11 23:56 , Processed in 0.065120 second(s), 26 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表