易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 500|回复: 8
收起左侧

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

[复制链接]
发表于 2023-8-17 12:40:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
(1146) Table 'bbs168xcn.common_member_archive' doesn't exist最新解决办法
7 W9 T3 A0 M9 m) V! lDiscuz! Database Error(1146) Table 'bbs168xcn.common_member_archive' doesn't existSELECT COUNT(*) FROM common_member_archive
: w9 b% g: t, o& U/ t! i) `7 i, N

, f6 ^: [7 u8 F' E+ i% w# `: Z, UPHP Debug
+ D( v/ E! e+ q$ g) D5 S
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(): J8 t2 \8 [7 a% u# f! O$ x

' |8 F# K5 J# `' j# }; V0 U

* r" J2 l* ~/ H# H" W5 {. A5 Q
4 |/ f' D, }( R& t+ Y% d3 S3 I8 p+ Z! W1 F5 w

1 c5 E+ q- z; n) g" w6 u& L以前都是进入数据库删除数据:5 w7 A2 n5 S2 f; a
mysql> use bbs168xcn$ s2 X- `5 T. y2 S+ d$ x
Reading table information for completion of table and column names" t3 x2 K% s0 t% E# p, C
You can turn off this feature to get a quicker startup with -A
& m6 x" ^0 A+ {/ j* w
- \( J$ e7 ~8 e& a) R8 E" BDatabase changed2 ~: G( \$ E; d' `5 y
mysql>  DELETE FROM `common_setting` WHERE `skey` = 'membersplit';. {6 f& K" R4 Z5 D
Query OK, 1 row affected (0.00 sec)$ {+ s  N- i+ a1 v% E9 y
; i. y% o1 K/ y. L  p) v3 L, Z
mysql>: _* R0 G' M3 E0 k. [
& B- G) \; h& t$ H% K) x; Z* A- I
感觉效果不是很好。
( v$ n7 D7 S5 ^' y
5 n9 X- v/ u# X$ \$ M以下方式比较好的解决这个问题:& _! X4 `; E" X( Q2 s
登录到后台>>>>选择论坛>>>>点击板块管理>>>>>随便选择一个板块名称,要求是二级版块,一级版块好像有些不行 >>>>
3 ]1 u5 C# P- a. |( X: e4 c点击设置复制>>>>>出现的两个框分别是 目标版块项目选择  .>>>>目标版块选择全部(使用crtl+a) >>>>项目选择使用  >>>允许使用【img】代码  >>>点击提交。刷新页面即可。
2 ^+ E+ J% d1 C/ Y" I2 D

' Q( O  c) [0 S% r8 t6 E
+ H5 S; Q* q. `$ B# E

点评

1、例如,mysql数据库的表内容太大,超过10G可能会影响discuz论坛的运转。 2、这种状况能够经过子数据库的方法来处理。有关详细信息,您能够搜索discuz官方网站以查找相关信息。 3、数据库装备过错,有时可能是主   发表于 2023-9-3 07:11
 楼主| 发表于 2023-8-19 08:17:52 | 显示全部楼层
经常出现这个问题,怎么回事?) w, X3 U/ }5 u7 L: A
, p- Q# L: v: K* Z
Discuz! Database Error) K' }) r3 S) K- f2 M
(1146) Table 'bbs168xcn.common_member_archive' doesn't exist
# o( W5 @# u$ x8 k/ bSELECT COUNT(*) FROM common_member_archive" l+ o% x. N9 F! P; y' C
PHP Debug
4 N; K3 {4 b5 `2 b8 Y9 i; Q" t2 I9 A* q7 W  g
No.        File        Line        Code
6 Z6 i) [- M3 a! \( L( g8 O9 s! U1        misc.php        98        require(%s)
2 t0 a: Z- P2 N+ a. i4 L2        source/module/misc/misc_stat.php        29        getstatvars(%s)$ _# m; z; E& n  a
3        source/module/misc/misc_stat.php        91        call_user_func(%s, %s)
6 m! D$ P2 ?% D) V4                        getstatvars_basic(%s)
7 @) ~( [+ x( |* h: }5        source/module/misc/misc_stat.php        101        table_common_member->count()
. q; z0 r* b$ N! a3 s% w0 X6        source/class/table/table_common_member.php        172        table_common_member_archive->count(%d)
% j$ H# t# ]# _2 G- q! K7        source/class/table/table_common_member_archive.php        48        discuz_database::result_first(%s, Array)
: H* T, V# U9 X, Y8        source/class/discuz/discuz_database.php        117        discuz_database::query(%s, Array, false, false)
# Q3 q7 B$ z- n8 a7 ~9        source/class/discuz/discuz_database.php        136        db_driver_mysql->query(%s, false, false)
0 m( c4 P+ B9 \' b3 v# ?10        source/class/db/db_driver_mysql.php        153        db_driver_mysql->halt(%s, %d, %s)
. @3 u$ ?0 i  x  _% K, m; K) N11        source/class/db/db_driver_mysql.php        224        break()4 l1 \+ {8 O2 R; F
 楼主| 发表于 2023-9-1 17:17:26 | 显示全部楼层
如果是数据表损坏请尝试修复表
3 \3 h! n9 y4 Arepair table tablename" c* ?6 {- n& D# H
 楼主| 发表于 2023-9-1 17:17:37 | 显示全部楼层
mysql> use bbs168xcn0 D! Y* Y$ @3 {/ x+ @0 ], u& Q% P
Reading table information for completion of table and column names. D3 Z5 C: ~: ~* g' W
You can turn off this feature to get a quicker startup with -A
0 g0 D+ l" u$ d1 @& }$ U" z. V5 Y' r( J6 V8 }
Database changed
9 m5 I( q' R& B5 c! [mysql> delete from `common_setting` where `skey`='membersplit';/ m3 b- [7 Q1 P0 i. M
Query OK, 0 rows affected (0.00 sec)
& J4 C# [) h/ k4 W; n
% }4 ~: `: v7 |" f% u8 k/ }2 L5 fmysql> repair table common_setting;
3 }9 ^! J' n2 U, G8 @! F+------------------------------+--------+----------+----------+( {2 {8 j5 x9 Q" M) O
| Table                        | Op     | Msg_type | Msg_text |: X! p6 _& o6 U7 b3 k, C8 i
+------------------------------+--------+----------+----------+1 j$ _& L' y. X" a* s$ ~/ p3 }
| bbs168xcn.common_setting | repair | status   | OK       |$ C0 J2 N- p- |; P( ~
+------------------------------+--------+----------+----------+
! E4 k2 |7 h! H% w) `+ @& h" E7 v1 row in set (0.00 sec)
3 Z. ~: F. S% j  D
2 B  R! e( R1 i7 ]mysql> select * from common_setting where 'skey'='membersplit' ;
" ^+ @4 F! F3 l4 p! `+ T$ Y: pEmpty set (0.00 sec)9 E0 u2 }: k* n0 ?7 b- D8 X* ~2 z, w( u
4 u/ n4 l0 Q' ^
mysql> delete from `common_setting` where `skey`='membersplit';
1 B9 e& s+ P- b# mQuery OK, 0 rows affected (0.00 sec)
: R5 s0 i* _; I: p1 W4 b* \. M+ c; H' _" I5 `6 t" V/ q+ s
mysql>! H& S( Q1 s6 A  ~- K3 F9 P
 楼主| 发表于 2023-9-1 18:05:56 | 显示全部楼层
问题现象2 G6 n- _" j- ?
在重启RDS MySQL实例后,进行表相关操作时,提示如下错误:
3 B8 u& ^% ^& C$ ~2 s
5 L- @$ V7 p/ ?$ b8 V9 O- HERROR 1146 (42S02): Table 'xxx.xxx' doesn't exist, p" P& p( p  A( ~- s
同时,在error log中可见如下记录:
- G+ R: y4 ^' P9 I: ]4 n1 u6 t5 T& T4 B% q6 t
[Warning] InnoDB: Load table `xxx`.`xxx` failed, the table has missing foreign key indexes. Turn off 'foreign_key_checks' and try again.
1 |# ?) E; u+ ]4 ]6 @  \[Warning] InnoDB: Cannot open table xxx/xxx from the internal data dictionary of InnoDB though the .frm file for the table exists.' w; ]1 K, r2 d) W
可能原因
1 j8 o3 O" N8 s, u$ L5 KMySQL中添加外键需要满足相应条件和限制,详情请见官方文档FOREIGN KEY Constraints。
6 i6 @" i2 N! T' i1 X8 J% u
' [1 h1 G% v  V9 ]/ T7 \7 }/ j, AMySQL的外键限制检查是通过变量foreign_key_checks来控制的,该变量可以在RDS MySQL实例运行时修改,不需要重启实例,默认值为ON。若将foreign_key_checks设为OFF,除特殊情况外(详情请参见官方文档FOREIGN KEY Constraints),将关闭外键限制检查。
9 U7 b- {% v  m+ p, B
! C5 u. m! U5 d8 U  \如果在关闭外键限制检查后,对外键进行了变更使其不满足外键限制,在RDS MySQL实例运行时不会报错。在重启实例时,由于重启时froeign_key_checks默认开启,InnoDB打开表时会进行外键限制检查,此时会报错。
9 ^6 U$ w9 N" o3 t) i, U( u  d. G0 S& i0 a# v4 [
常见的情况有以下两种:
4 d. i, @6 B) s) f  r5 u: M  |' D7 W( \
更改了父表和子表外键相关列的字符集- b( t: d( x+ v
/ @. H  D8 A8 B' M3 q8 k( A- V
MySQL 5.6、5.7、8.0允许在foreign_key_checks设置为OFF的情况下,修改父表和子表外键相关列的字符集。实例重启以后:5 J9 H; f6 n" t, V
5 C* R' r: V0 n: L$ h8 F# q' [
MySQL 5.6、5.7会在error log中提示warning,同时无法使用父表。9 J3 k) I, E+ x& Q

2 v' c/ V' r) P9 n- A1 mMySQL 8.0不会在error log中提示warning,可以使用父表。
, X+ u& K) A& i  _  Y5 O2 e7 \. I( j. @. ?. H+ u
删除了父表和子表外键相关列的索引0 H6 J9 v! }! T8 a
5 M2 w% e, [* W5 e% w% K
对于MySQL 5.7、8.0:不允许在foreign_key_checks设置为OFF的情况下,删除父表和子表外键相关列的索引。
' D1 L* ~% J1 L. ?* r% Z! p1 u  b( I, ?! k* G( Z/ X
对于MySQL 5.6:允许在foreign_key_checks设置为OFF的情况下,删除父表和子表外键相关列的索引。删除相关列索引后,重启实例会提示warning,同时被删除索引的表无法使用。) c/ a% C* n- n0 I7 P1 L
2 b1 v# w3 ~' a' I
解决方案
- f& d/ x& y! x$ a5 t" W对于修改字符集导致的问题,将foreign_key_checks设置为OFF,将父表和子表外键相关列的字符集修改一致。
8 ]3 K% M$ G& u/ k. `* N' v
- C# D/ b/ Q6 y; K对于删除索引导致的问题,将foreign_key_checks设置为OFF,重建索引。
 楼主| 发表于 2023-9-3 07:12:05 | 显示全部楼层
1、例如,mysql数据库的表内容太大,超过10G可能会影响discuz论坛的运转。+ x6 I/ D; w1 ~0 L7 s3 g
1 N( z, _) b! N% f" R# X; o$ }: {
2、这种状况能够经过子数据库的方法来处理。有关详细信息,您能够搜索discuz官方网站以查找相关信息。/ N% w6 m; B5 f' \. M' j
3 D+ C) z* l. Y! W$ U8 K
3、数据库装备过错,有时可能是主机移动,数据库移动等,导致数据库信息填写不正确,或许旧数据库信息未及时更新,例如数据库用户名,暗码,数据库表填充过错。
7 t& M2 ]5 z7 |$ @3 D9 ]9 I# O
5 {# U' C# H9 s) U9 p& H% N4、您能够修正相关的数据库信息,您能够在config目录中找到config目录,修改数据库信息装备文件。Discus!3有三个参阅装备文件。仔细检查数据库装备和其他装备是否是最新的。
1 v' w9 _; h# F# y, W' o% B
" Y7 ]5 Q4 w1 `9 a装置目录/config/config_global.php装置目录/config/config_ucenter.php装置目录/uc_server/data/config.inc.php。有关详细信息,请参阅discuz官方文档。
. |$ @1 ^& M1 p9 N, b# g/ a8 J5 ?7 r
5、数据库没有运转。* K  c. W4 W8 u6 w* `' o3 W
0 ^' g& O9 |; N4 Q# L5 R$ B) Y
6、检查主机的mysql数据库程序是否正在运转或已关闭。假如它是虚拟主机,您能够联络空间提供商以将其打开。假如虚拟主机不支持mysql数据库,则能够经过替换主机或空间提供程序来处理此问题。7 a- A! `. F" @. ]3 f
图片[1]-discuz! database error什么意思(如何解决)-小白之家,discuz!databaseerror如何解决,原因一:数据库表太大
" ]4 y0 |; M4 _, I* @! S  K# z
; y) H% V8 q; L5 `- j比方mysql数据库的表内容太大,超过10G就有可能会影响discuz论坛的运行。
. o9 y5 O& w" `1 J6 Q8 y+ Z1 P: @3 @; c7 m+ Q; m
Discuz!DatabaseError是什么原因,怎样修正+ a# c% p$ ]5 m2 q' x) ^( v

! n; r* l) P5 I0 R这种状况能够经过对数据库分表的方法来解决。
) k, S1 ^3 u3 s, ^# t: T9 ^9 X$ H
! A7 o+ c% h6 X/ t' C9 {原因二:数据库装备过错! X; ~; l% X2 {% t  x0 C3 S
% n" G! V+ G& G: o2 v
有时候可能是主机搬迁、数据库搬迁等,形成数据库信息填写过错,或旧数据库信息没有及时更新等,比方数据库用户名、密码、数据库表填写过错等。
1 ]& [! R; Q* g& P( v' |. M5 a" q. [" ~) U
能够批改一下相关数据库信息即可,能够找到config目录,修改config目录中的数据库信息装备文件。Discus!3的参考装备文件有三个,仔细检查一下里面的数据库装备和其他装备是不是最新的。安装目录/config/config_global.php安装目录/config/config_ucenter.php安装目录/uc_server/data/config.inc.php。详细可查阅discuz官方文档。
: H( u/ g: E* a# f  u! Q* T; a
; T" Q2 r; b* a0 W4 o原因三:数据库没有运行
) Q+ P7 b0 o* f6 h/ S2 S4 A( [# Q$ h4 g- R% L5 W
检查一下主机的mysql数据库程序是否正在运行或已经关闭% ^. K6 Q# ?6 r# ^! w8 Q
" T4 L8 M* ~' i" _
原因四:数据库过错" `  l6 B2 D, n/ ?9 A! O

' b8 a5 U& ^4 n( ^9 l3 u* E' ?# Q可运用discuz官方小东西Discuz!Tools来对数据库进行修正。到discuz官方下载tools东西,解压上传到网站相关目录,然后打开链接、输入密码,修正数据库->一键修正就行了。修正完成记得删去Discuz!Tools相关文件。: Y" y" A. @5 R6 l. ^! _8 D

3 j0 F: `  ^( o. T$ R: I$ D/ ~- v$ DDiscuz!DatabaseError是什么原因,怎样修正$ L8 p1 `: s$ ^" `& l4 Y: u: K

) q+ X$ W7 e+ O9 ?5 {) r原因五:数据库繁忙" Z. ~4 _$ U! W% z( X

) ?; O( Q- Z$ H0 H能够登录discuz后台,开启【贴子缓存】、【主页缓存】,能够缓解数据库繁忙的问题。5 s  H/ X* t9 R
( C* N8 P( A3 v( R  l: D
Discuz!DatabaseError是什么原因,怎样修正) I" v; f7 Y% U/ ^( |0 x2 o
& T2 }, K# o, z% Y2 X' T
详细可参阅discuz官方性能优化的文档。0 Q$ h# ^; A# d9 n: u& u6 n
; v$ M' q! s, r; o4 b8 i& G
Discuz!DatabaseError是什么原因,怎样修正
/ R3 n: R2 j+ ?5 \
5 t2 F. F% o- o  A( `原因六、主机内存不够、不稳定
+ }! w% f" O; r* y
' E3 _$ }6 |' C8 ?! B1 w也有可能是主机不太稳定,可能是主机内存过小,杀死了mysql进程。
- n* o0 n9 v" W* r
: R" Z  J6 f8 h# P! o  VDiscuz!DatabaseError是什么原因,怎样修正/ n* f& t5 \, X0 }/ S" r* ]! f/ [

2 w+ x* `: q  y4 B9 ^; W% y- e7 I( ^原因七:可能是相关软件版别太旧
- ]6 T* M8 }3 ]6 }% O  _! Z1 z# r+ Z' w, L8 |3 e% y/ l1 d$ b
比方discuz版别、mysql数据库的版别是不是最新的、php的版别,服务器是否开启相关权限、php权限,是否支撑discuz系统等?
 楼主| 发表于 2023-9-3 07:21:43 | 显示全部楼层
解决方法:
4 ^1 _# V* d/ R  P1 D$ t9 `
7 o8 w% d  b5 J1 O9 C$ c登陆后台,站长—数据库—升级(Discuz! 数据库升级 - 请将数据库升级语句粘贴在下面:)中执行语句
4 B, d" R- C4 x* f" k- A, y9 `9 v
3 v1 A1 X/ i5 T8 p* a: dDELETE FROM `common_setting` WHERE `skey` = 'membersplit';
8 k9 M9 ~) k0 l" R4 {就可以了,若没有找到执行语句的输入窗口 则修改config/config_global.php 当中的 $_config[admincp][runquery] 设置修改为 1 (为了安全执行完该语句后 确认解决了1146错误后 再将配置该回来 )  刷新后再输入执行。8 Y2 U' s1 y% e' i1 k

: X7 P/ V& u8 C0 `2 W8 m5 V4 H提示:为了数据安全执行该语句前建议备份数据。
 楼主| 发表于 2023-9-3 07:25:28 | 显示全部楼层
论坛后台>>>站长>>>>数据库>>>  升级>>>>>   Discuz! 数据库升级 - 请将数据库升级语句粘贴在下面:
4 C4 s0 V% N! K! u2 H
5 Z7 ]* i% _( Z' T( V/ y输入:1 B0 A- i5 u" B
DELETE FROM `common_setting` WHERE `skey` = 'membersplit';
# U6 u0 d- _- f5 l+ i, ^5 w( z2 w执行即可。
) \1 `  h. O! P2 V3 ~4 i然后刷新页面即可。% w' ?+ J' S$ Q
" G: ?! ^0 I& }. g
技巧提示; O8 `& N  s5 l1 O6 A- g7 B
您可以通过修改 /source/admincp/admincp_quickquery.php 来添加常用 SQL 操作进行功能扩充。9 [3 o2 r8 S) z! z  {
出于安全考虑,Discuz! 后台默认情况下禁止 SQL 语句直接执行,只能使用常用 SQL 当中的内容," N* x! y: e+ E) |6 A2 h7 s2 ^$ o
如果您想自己随意书写 SQL 升级语句,需要将 config/config_global.php 当中的 $_config[admincp][runquery] 设置修改为 1。6 v/ u+ t) ^& m/ f' h& d8 m
& Z, w/ M, P  C3 b9 p2 O+ ~! \

* m0 v9 K. s! sDiscuz! 提示
3 M. {4 T& T- c. {. O8 Q# f2 GDiscuz! 数据结构升级成功,影响的记录行数 0
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 23:59 , Processed in 0.053019 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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