找回密码
 注册
查看: 511|回复: 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最新解决办法4 b/ I9 Z) m# h! z3 {
Discuz! Database Error(1146) Table 'bbs168xcn.common_member_archive' doesn't existSELECT COUNT(*) FROM common_member_archive& ]1 L% X# j0 E9 ^

7 H2 m# N3 V  i6 z, SPHP Debug2 T5 l5 }  j0 F& @1 K+ m
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()
8 _8 z  E2 A2 h  {6 d; R+ Z' w$ h* H! G& v- |
+ X, p0 R- O9 B6 _" c/ Y' A
- A' ?, C3 j" Z2 c, k  ~

7 K/ B; F# s' K: U1 w
/ ?7 W9 T  {- I- x' J以前都是进入数据库删除数据:
4 v8 B/ N' h4 c. B1 T/ f  Xmysql> use bbs168xcn6 Z6 G, C, J2 Z4 O
Reading table information for completion of table and column names
! y1 Q3 W7 B( j1 J9 mYou can turn off this feature to get a quicker startup with -A
  R1 k, T6 O+ T* P; N& ~! @2 Q8 A
Database changed
! `. j+ m" B$ s& Qmysql>  DELETE FROM `common_setting` WHERE `skey` = 'membersplit';
* Z! B1 @, d% k0 tQuery OK, 1 row affected (0.00 sec)
3 d( U$ }5 c: T5 ~, G! p
* t6 H* L5 S; R( Pmysql>
: F' P/ C  l, d4 @
7 D- K' p5 U- `/ e) y感觉效果不是很好。
+ z# e" P$ W/ F$ L0 N$ R/ l3 J. q
以下方式比较好的解决这个问题:
& q' i- ~; @; `登录到后台>>>>选择论坛>>>>点击板块管理>>>>>随便选择一个板块名称,要求是二级版块,一级版块好像有些不行 >>>>
6 L: }7 i; o3 `$ x0 v0 B# ]点击设置复制>>>>>出现的两个框分别是 目标版块项目选择  .>>>>目标版块选择全部(使用crtl+a) >>>>项目选择使用  >>>允许使用【img】代码  >>>点击提交。刷新页面即可。& i8 d1 {( I0 w& c, W* A

- C- {7 |6 Y5 s/ E" |0 S- g
1 W+ N/ k" X" u4 U. i4 y

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-8-19 08:17:52 | 显示全部楼层
经常出现这个问题,怎么回事?+ H  J, p4 R6 a6 w
& f- l! ?1 n- B' L- ]7 `
Discuz! Database Error1 D$ k" B: {' r6 m3 }6 l# h
(1146) Table 'bbs168xcn.common_member_archive' doesn't exist
& c2 }  S. e# e+ uSELECT COUNT(*) FROM common_member_archive
( E( i) M! K0 p$ u5 I' n, W, \PHP Debug) y8 y6 B% O6 B. z9 M

! W! O( q7 N& E, a9 l( A3 UNo.        File        Line        Code2 \. k9 p4 x' e# P( J
1        misc.php        98        require(%s)* v$ r0 P6 t6 \6 _# s- I  l
2        source/module/misc/misc_stat.php        29        getstatvars(%s), O- l: e5 a( |. n% s2 E! d/ ]% }
3        source/module/misc/misc_stat.php        91        call_user_func(%s, %s)
! J# W& u6 s+ _& p4                        getstatvars_basic(%s)
7 ?0 D: f, e! x* e' d! c5        source/module/misc/misc_stat.php        101        table_common_member->count()
  I9 K0 j/ i7 c# G! z. p  v; O6        source/class/table/table_common_member.php        172        table_common_member_archive->count(%d)0 ~2 [# {# r0 i
7        source/class/table/table_common_member_archive.php        48        discuz_database::result_first(%s, Array)
- S) Z/ ~# ~% W1 T8        source/class/discuz/discuz_database.php        117        discuz_database::query(%s, Array, false, false)0 n: f2 v* A5 y) V- H. V% d6 r8 d2 J
9        source/class/discuz/discuz_database.php        136        db_driver_mysql->query(%s, false, false)* j' T: i% m0 |- V' k; U, U
10        source/class/db/db_driver_mysql.php        153        db_driver_mysql->halt(%s, %d, %s)
! ~$ b1 E% D; p  M0 J) M11        source/class/db/db_driver_mysql.php        224        break()
* O7 `1 r! S& v  m7 P

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-1 17:17:26 | 显示全部楼层
如果是数据表损坏请尝试修复表# M' W5 c4 J! W) i
repair table tablename
9 D' t4 G7 p) Q6 V. J

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-1 17:17:37 | 显示全部楼层
mysql> use bbs168xcn: {4 K* v* {" n, V
Reading table information for completion of table and column names
: w( k* o2 t" ^# R" ?You can turn off this feature to get a quicker startup with -A& f' [7 \4 h. e4 C$ _2 t# a

6 L" |5 Y* h" j" KDatabase changed
. M% Q8 h/ c/ n3 J* pmysql> delete from `common_setting` where `skey`='membersplit';
; Z# J) @4 ~# Y" A' t3 FQuery OK, 0 rows affected (0.00 sec)
  v6 Y) y" _0 C8 F) b% N
3 j! L) h5 R8 y9 c: b7 @5 d5 }: xmysql> repair table common_setting;6 I. J, X. C! k2 l( g1 ?
+------------------------------+--------+----------+----------+
. D4 `2 l% K  c' l. ^7 ]) |! K2 G" z( L| Table                        | Op     | Msg_type | Msg_text |% ^% o8 ^6 J; W& ]% C/ k
+------------------------------+--------+----------+----------+
# K& t  p5 L2 L| bbs168xcn.common_setting | repair | status   | OK       |4 p, i( \& ^2 ~+ h
+------------------------------+--------+----------+----------+1 c4 ^7 [; w9 v; F1 w  K% a3 P6 B% m* b
1 row in set (0.00 sec)
' q1 \6 E9 ?% C) r7 U% C& m6 X1 ~
mysql> select * from common_setting where 'skey'='membersplit' ;
8 p* s3 T) b! X7 y6 m3 J- ~3 c" PEmpty set (0.00 sec)
& h6 W$ P/ d  A: B) D# M! _7 \/ F9 ?4 D2 i8 {" o
mysql> delete from `common_setting` where `skey`='membersplit';
' p. X) @. u2 x- o/ I/ \Query OK, 0 rows affected (0.00 sec)* Z6 W6 @( e1 s' w' V: r" l: P
4 @2 A: P. A% l: s$ S' ^
mysql>
7 \* d. I  L+ z/ o1 ]$ G

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-1 18:05:56 | 显示全部楼层
问题现象
: V& g( S; I) \在重启RDS MySQL实例后,进行表相关操作时,提示如下错误:
8 e5 u- z* K7 N, r) D- ]3 v0 _4 F9 O: l$ v5 x
ERROR 1146 (42S02): Table 'xxx.xxx' doesn't exist: h, h" ^" l0 J: n5 T" _
同时,在error log中可见如下记录:( i! P  F2 U! k+ w/ u$ h

( `2 u8 S' s" `; ~3 P[Warning] InnoDB: Load table `xxx`.`xxx` failed, the table has missing foreign key indexes. Turn off 'foreign_key_checks' and try again.
+ C' w3 Y6 X0 F6 _; R/ _' S[Warning] InnoDB: Cannot open table xxx/xxx from the internal data dictionary of InnoDB though the .frm file for the table exists.
# w( s% l# q5 Q, L- Y+ H- x可能原因- s) ?# x$ p: B2 g/ ]2 s
MySQL中添加外键需要满足相应条件和限制,详情请见官方文档FOREIGN KEY Constraints。* x. V6 g1 H- L- x  n

6 H. V; M- W2 U! }& GMySQL的外键限制检查是通过变量foreign_key_checks来控制的,该变量可以在RDS MySQL实例运行时修改,不需要重启实例,默认值为ON。若将foreign_key_checks设为OFF,除特殊情况外(详情请参见官方文档FOREIGN KEY Constraints),将关闭外键限制检查。( I6 u6 ?/ J9 U- ^  b
) m7 \# K- o7 _' k: @
如果在关闭外键限制检查后,对外键进行了变更使其不满足外键限制,在RDS MySQL实例运行时不会报错。在重启实例时,由于重启时froeign_key_checks默认开启,InnoDB打开表时会进行外键限制检查,此时会报错。
2 k  T8 M# u6 K5 b" v% E! d. n
5 c! N+ Q9 g; Q) \% v常见的情况有以下两种:
( F7 M1 w' a7 I2 c- B- G8 g5 U  \/ j' C- A3 y* M
更改了父表和子表外键相关列的字符集
7 k4 l4 S/ Q- w4 p, @! {
: s' D  E( @) q- @" l2 ~3 v: p- V1 U8 JMySQL 5.6、5.7、8.0允许在foreign_key_checks设置为OFF的情况下,修改父表和子表外键相关列的字符集。实例重启以后:8 ^" j& w9 a3 X7 A

" d  B- s' H7 z3 J- f9 ^MySQL 5.6、5.7会在error log中提示warning,同时无法使用父表。
* M) X+ u7 V3 w( I; y
, f6 E, s$ s! v# f& Z0 \MySQL 8.0不会在error log中提示warning,可以使用父表。# F6 e8 I( ~) m: j+ L. x
5 g* R* M, I! `' S
删除了父表和子表外键相关列的索引+ v5 I2 u* c0 _3 p6 [* e+ y! g
  Z& d/ U' s: j6 d& t8 Q
对于MySQL 5.7、8.0:不允许在foreign_key_checks设置为OFF的情况下,删除父表和子表外键相关列的索引。- c, ]- `6 D* h6 _, ^
7 Q+ ^: P* I6 O8 F1 R7 a  e
对于MySQL 5.6:允许在foreign_key_checks设置为OFF的情况下,删除父表和子表外键相关列的索引。删除相关列索引后,重启实例会提示warning,同时被删除索引的表无法使用。) X8 X7 r) N; n6 @& b

6 a/ R: H5 m3 ~. \, k解决方案
+ x: h" R# i1 `% d- W对于修改字符集导致的问题,将foreign_key_checks设置为OFF,将父表和子表外键相关列的字符集修改一致。) V% P8 b- H$ j; f. K9 e+ A, ]9 p
4 O, |2 w' e4 A) x: x
对于删除索引导致的问题,将foreign_key_checks设置为OFF,重建索引。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-3 07:12:05 | 显示全部楼层
1、例如,mysql数据库的表内容太大,超过10G可能会影响discuz论坛的运转。
1 }" ~. t4 ~% y' @! Q4 I
- K- e0 l4 z/ ]/ z2、这种状况能够经过子数据库的方法来处理。有关详细信息,您能够搜索discuz官方网站以查找相关信息。& o$ u5 I; N7 v4 M/ c, r
0 P# M/ D. D. q, p
3、数据库装备过错,有时可能是主机移动,数据库移动等,导致数据库信息填写不正确,或许旧数据库信息未及时更新,例如数据库用户名,暗码,数据库表填充过错。
* A+ {0 z. B& G: V$ e+ e3 q' ]. q5 N& j& H
4、您能够修正相关的数据库信息,您能够在config目录中找到config目录,修改数据库信息装备文件。Discus!3有三个参阅装备文件。仔细检查数据库装备和其他装备是否是最新的。  Q' e+ g0 K# P( t' z+ ~
: Z  x. \  G# h3 @+ @, B7 B" X
装置目录/config/config_global.php装置目录/config/config_ucenter.php装置目录/uc_server/data/config.inc.php。有关详细信息,请参阅discuz官方文档。
. I( A- s3 }& m: W3 E) I( s) a. {4 r% J8 y- s, ]  e( U; s7 p
5、数据库没有运转。4 V0 c5 K8 ~# Q) y6 j* F
! _* X  L/ B& y6 t
6、检查主机的mysql数据库程序是否正在运转或已关闭。假如它是虚拟主机,您能够联络空间提供商以将其打开。假如虚拟主机不支持mysql数据库,则能够经过替换主机或空间提供程序来处理此问题。/ v8 c* [' F3 m5 ~* n6 S
图片[1]-discuz! database error什么意思(如何解决)-小白之家,discuz!databaseerror如何解决,原因一:数据库表太大* H$ f8 N0 o$ D7 ^# d- L2 ^* }& R7 B

/ B# x  O; T9 K" d+ H4 O3 R比方mysql数据库的表内容太大,超过10G就有可能会影响discuz论坛的运行。
4 h9 b, K6 L* F4 [$ E
* W8 d  J/ ^3 O2 I- F/ b  y1 ?& dDiscuz!DatabaseError是什么原因,怎样修正- N  f& L3 p3 C7 S0 u& x0 c

2 k3 r# M% U  C  q$ d; U; z这种状况能够经过对数据库分表的方法来解决。
" [& R% z+ s' {- D" {7 U  B: D4 F% ?0 v' O
原因二:数据库装备过错
0 i" g6 `5 X/ C; @3 W; J% B0 H5 ?/ G/ y  R4 M5 M9 C5 n
有时候可能是主机搬迁、数据库搬迁等,形成数据库信息填写过错,或旧数据库信息没有及时更新等,比方数据库用户名、密码、数据库表填写过错等。
% o8 t9 w7 O- n1 h1 U# Q, M! w/ t. _2 r; o  s
能够批改一下相关数据库信息即可,能够找到config目录,修改config目录中的数据库信息装备文件。Discus!3的参考装备文件有三个,仔细检查一下里面的数据库装备和其他装备是不是最新的。安装目录/config/config_global.php安装目录/config/config_ucenter.php安装目录/uc_server/data/config.inc.php。详细可查阅discuz官方文档。& N4 K0 n! ^! c6 H! Z5 q3 u; }
9 u& O" l- D/ j
原因三:数据库没有运行9 a7 e; S2 A2 q3 i

# ^8 ~7 y7 m, |% V5 p检查一下主机的mysql数据库程序是否正在运行或已经关闭
" M% w# O% ^7 o: v2 o5 E' f. x9 y( C1 h2 z  y/ U
原因四:数据库过错; E. Q4 r5 u+ U+ m1 X5 X

6 R: r1 C; a1 G$ M5 x可运用discuz官方小东西Discuz!Tools来对数据库进行修正。到discuz官方下载tools东西,解压上传到网站相关目录,然后打开链接、输入密码,修正数据库->一键修正就行了。修正完成记得删去Discuz!Tools相关文件。: l, u1 z+ m2 V. @7 }% q
6 C& I) {$ Q/ [2 E
Discuz!DatabaseError是什么原因,怎样修正
$ O( ?! ]8 [& `8 h" i
& O- p  t8 A4 W6 T9 `原因五:数据库繁忙. h" {1 X6 s: h
& m. K4 j3 `0 f
能够登录discuz后台,开启【贴子缓存】、【主页缓存】,能够缓解数据库繁忙的问题。
5 Y$ m) A" \# H) v' R
( s( F4 U- s* u8 qDiscuz!DatabaseError是什么原因,怎样修正& y7 ~+ W8 v3 I% t( I

7 V( L" y1 C* n$ \3 ?- q详细可参阅discuz官方性能优化的文档。/ H- M9 n  P! W$ y( B+ ]) j& i

7 d1 L9 q  n5 `% Z9 T  l7 zDiscuz!DatabaseError是什么原因,怎样修正0 j% Y5 k8 D0 {, P

3 K4 m4 k6 a7 B% e) Q原因六、主机内存不够、不稳定7 w) E; y/ r. a, j8 K+ _

$ s- _1 b/ q8 r! U% D8 y: _也有可能是主机不太稳定,可能是主机内存过小,杀死了mysql进程。+ ^! L. p: I, e2 k( Y6 e8 L2 s

+ t2 [5 Z7 F1 S$ aDiscuz!DatabaseError是什么原因,怎样修正) l1 u" [' Q! G5 E# A% T$ M% h7 b
9 `) c6 ^# W" C5 a* U
原因七:可能是相关软件版别太旧9 v9 ~: N1 h7 S* }7 X$ L; }
# e$ @5 R" `* E8 r, {' J, D
比方discuz版别、mysql数据库的版别是不是最新的、php的版别,服务器是否开启相关权限、php权限,是否支撑discuz系统等?

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-3 07:21:43 | 显示全部楼层
解决方法:
; Z9 w" T+ J/ }7 g1 h4 C: C, ?0 m# P/ H2 O& b
登陆后台,站长—数据库—升级(Discuz! 数据库升级 - 请将数据库升级语句粘贴在下面:)中执行语句# j8 ]; h3 K$ b( e  p' Z: K8 V
4 u6 }9 g5 T" b/ O- q
DELETE FROM `common_setting` WHERE `skey` = 'membersplit';
1 U1 w2 ~6 L! k" H9 _就可以了,若没有找到执行语句的输入窗口 则修改config/config_global.php 当中的 $_config[admincp][runquery] 设置修改为 1 (为了安全执行完该语句后 确认解决了1146错误后 再将配置该回来 )  刷新后再输入执行。
: F5 Z, `  x# n: E/ w
5 c, x4 P' v, G. r9 Q提示:为了数据安全执行该语句前建议备份数据。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-3 07:25:28 | 显示全部楼层
论坛后台>>>站长>>>>数据库>>>  升级>>>>>   Discuz! 数据库升级 - 请将数据库升级语句粘贴在下面:
4 {" z$ t! h! u9 R
, d3 U" ^) s+ D& j输入:
; Z) P) ]1 N5 J1 S' gDELETE FROM `common_setting` WHERE `skey` = 'membersplit';
. ~% r, v, h6 E5 r3 g2 r执行即可。
5 S* I3 c: {8 T6 @7 W  h& `4 s然后刷新页面即可。5 o1 o; I* ^2 Q# i7 t
0 L' |5 ]+ R9 F; C8 T$ Q
技巧提示
! y% o1 i1 X/ L" Y- S  H9 i您可以通过修改 /source/admincp/admincp_quickquery.php 来添加常用 SQL 操作进行功能扩充。
4 T% ~' h* F% _$ ^" k出于安全考虑,Discuz! 后台默认情况下禁止 SQL 语句直接执行,只能使用常用 SQL 当中的内容,# {0 y" T* K7 `( l$ I% \
如果您想自己随意书写 SQL 升级语句,需要将 config/config_global.php 当中的 $_config[admincp][runquery] 设置修改为 1。, n4 p. V3 F" f+ |/ f/ f4 |$ H
8 {  o+ d( s+ {
9 [' ^8 G! V& ]
Discuz! 提示
* W( \1 Y: B/ H9 EDiscuz! 数据结构升级成功,影响的记录行数 0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 01:05 , Processed in 0.029265 second(s), 26 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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