易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 502|回复: 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最新解决办法$ x, V8 j/ R  k' k; Q
Discuz! Database Error(1146) Table 'bbs168xcn.common_member_archive' doesn't existSELECT COUNT(*) FROM common_member_archive2 k7 D6 [/ ^9 [0 f# T: Q
2 G; o% K2 V# @' y4 ~1 g: H8 x
PHP Debug4 W+ C# j; N# P# @
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()
7 V3 x, _) x+ ^* m% b
; F1 J% e; n8 n7 j6 y
( \* h- t3 s# G; V; P
; ]; F, }; F+ w/ m  a. ^

6 J4 t2 i: K8 F0 E+ ^! u
3 m, h6 }& w& F' ]* ?% {以前都是进入数据库删除数据:! m! L9 e6 w+ `
mysql> use bbs168xcn
! B. ?, K" N- }& W) aReading table information for completion of table and column names
' V+ I3 {3 g8 G* j9 B3 n. KYou can turn off this feature to get a quicker startup with -A
3 z/ y: }# O  `: h8 F
; K( W! o, ]. f0 {' _Database changed
6 Y1 ?- G# u3 S; q& C+ `! H7 J$ Lmysql>  DELETE FROM `common_setting` WHERE `skey` = 'membersplit';
6 P- W) F, C6 z& m/ M! f4 hQuery OK, 1 row affected (0.00 sec)2 R' X' k/ [# O& p6 Q& o
- k& N/ W- h5 x0 w% |) P3 \3 V  K
mysql>5 {" t4 L5 T9 Z: y2 ?) V

( e' A: N& Q$ N  _% m  `感觉效果不是很好。' i) J4 T. n  d+ g7 O  i2 C; z

, Q- ]6 i% a3 ^以下方式比较好的解决这个问题:9 t, J# m! G% i9 w$ g
登录到后台>>>>选择论坛>>>>点击板块管理>>>>>随便选择一个板块名称,要求是二级版块,一级版块好像有些不行 >>>>
  T4 c3 d; V; J- E( i) G% ^点击设置复制>>>>>出现的两个框分别是 目标版块项目选择  .>>>>目标版块选择全部(使用crtl+a) >>>>项目选择使用  >>>允许使用【img】代码  >>>点击提交。刷新页面即可。
5 X" Y/ j: P, W, a# I

1 f/ {" s$ \' k9 G5 ]6 O1 Y
" i6 N. a$ o: t' T/ r

点评

1、例如,mysql数据库的表内容太大,超过10G可能会影响discuz论坛的运转。 2、这种状况能够经过子数据库的方法来处理。有关详细信息,您能够搜索discuz官方网站以查找相关信息。 3、数据库装备过错,有时可能是主   发表于 2023-9-3 07:11
 楼主| 发表于 2023-8-19 08:17:52 | 显示全部楼层
经常出现这个问题,怎么回事?2 x7 O& a- }  h5 E1 p

, H8 F$ m; U9 XDiscuz! Database Error
. M( I6 ~4 u* Z. h# c(1146) Table 'bbs168xcn.common_member_archive' doesn't exist! h6 A3 r: u8 F! @' E1 M: X: J  q3 s
SELECT COUNT(*) FROM common_member_archive
( W0 z* o6 K$ L! W0 ?- zPHP Debug4 L# ~9 x# Y5 m, [) S

% m/ G: x$ O; p) [; P# QNo.        File        Line        Code
% ?/ W1 [! B! C1 H2 P# y4 L9 \1        misc.php        98        require(%s)
; K5 m6 s: h7 u. p: m5 j2        source/module/misc/misc_stat.php        29        getstatvars(%s)) k% w* E! A* n. S
3        source/module/misc/misc_stat.php        91        call_user_func(%s, %s)! |* y, z' }, T4 j3 N$ ?
4                        getstatvars_basic(%s)
, N; v* G' ~: l9 h/ U0 U5        source/module/misc/misc_stat.php        101        table_common_member->count()# ^5 z+ X" ]9 O2 d; ]
6        source/class/table/table_common_member.php        172        table_common_member_archive->count(%d)
; H5 l! W' d* K, T  t2 c, T- n' i7        source/class/table/table_common_member_archive.php        48        discuz_database::result_first(%s, Array)
# u; [$ P+ ?8 b- ]0 L5 f/ o8        source/class/discuz/discuz_database.php        117        discuz_database::query(%s, Array, false, false)6 c+ `: t! ?) [! i  q- J1 @6 `& I
9        source/class/discuz/discuz_database.php        136        db_driver_mysql->query(%s, false, false)( n$ L! q6 r& }
10        source/class/db/db_driver_mysql.php        153        db_driver_mysql->halt(%s, %d, %s)
% O7 s% c0 E2 l5 l/ L( [11        source/class/db/db_driver_mysql.php        224        break()
0 Z  x1 U& ]" d
 楼主| 发表于 2023-9-1 17:17:26 | 显示全部楼层
如果是数据表损坏请尝试修复表
* ]0 |- k, b' s; ^repair table tablename
& l& Z; p7 o6 M1 e" s
 楼主| 发表于 2023-9-1 17:17:37 | 显示全部楼层
mysql> use bbs168xcn" T. f; I$ a; P' ]( h. Y* H
Reading table information for completion of table and column names
( j$ W$ C7 i7 j" e6 C4 ~% k  W, s( kYou can turn off this feature to get a quicker startup with -A
1 L" [* R$ i+ n+ g: e
  A1 P' \8 F& w. F, f5 zDatabase changed
" }5 {# q7 k; ?( m  @mysql> delete from `common_setting` where `skey`='membersplit';9 i7 Q0 s$ c3 u1 ~& l7 t- X" Y
Query OK, 0 rows affected (0.00 sec)
4 K: Z7 x0 |# @! _6 l: F; s4 s: q! h/ ^6 u# m/ J$ r
mysql> repair table common_setting;
1 [& @  B; B0 ?, b6 c+ ~+------------------------------+--------+----------+----------+
  E3 x+ u* u3 {- z| Table                        | Op     | Msg_type | Msg_text |% U$ c+ f/ W7 U
+------------------------------+--------+----------+----------+; ~0 Y, y2 H8 ~4 [- J! @
| bbs168xcn.common_setting | repair | status   | OK       |
) V' f0 J8 n$ s# y# W  G$ r+------------------------------+--------+----------+----------+
: R/ n) ^2 f( {' u, @8 w1 row in set (0.00 sec)
9 N- T$ O8 Q5 B, \
. p  [0 E4 ]+ u; C. F  i2 Rmysql> select * from common_setting where 'skey'='membersplit' ;0 q( {5 A) t: c$ O1 \
Empty set (0.00 sec)
  f4 y. s( i/ p8 n2 a5 B
! f* s3 z2 `9 [3 Rmysql> delete from `common_setting` where `skey`='membersplit';' Y" D/ k! D  P; ~
Query OK, 0 rows affected (0.00 sec)
1 [/ E# w, H5 N
$ `" T! K$ i' w( ymysql>
9 X8 {: ^5 ^3 a! N1 T8 ^1 M  u
 楼主| 发表于 2023-9-1 18:05:56 | 显示全部楼层
问题现象
: q! I+ @4 ?* i* ~' p# v; Z' j在重启RDS MySQL实例后,进行表相关操作时,提示如下错误:
& d" i" b/ o/ |4 }  F9 d2 A2 C9 e# @) L0 S+ }) k# q
ERROR 1146 (42S02): Table 'xxx.xxx' doesn't exist
- g& M7 s7 Q2 S" S4 M) d同时,在error log中可见如下记录:
( L1 w% r- _9 r* F% K, @/ c9 ?7 W7 M6 Q$ i. A8 J( O& X, {
[Warning] InnoDB: Load table `xxx`.`xxx` failed, the table has missing foreign key indexes. Turn off 'foreign_key_checks' and try again.
' G: y9 j9 t4 N% U3 \2 q  v[Warning] InnoDB: Cannot open table xxx/xxx from the internal data dictionary of InnoDB though the .frm file for the table exists.
3 c6 M7 `# L' k1 e* T9 z可能原因' J/ C# h0 c, ~$ c8 \0 h
MySQL中添加外键需要满足相应条件和限制,详情请见官方文档FOREIGN KEY Constraints。) o, U* S1 O9 U/ e! l

" h: a% h* V6 U8 ?6 }. gMySQL的外键限制检查是通过变量foreign_key_checks来控制的,该变量可以在RDS MySQL实例运行时修改,不需要重启实例,默认值为ON。若将foreign_key_checks设为OFF,除特殊情况外(详情请参见官方文档FOREIGN KEY Constraints),将关闭外键限制检查。
0 b0 _! P4 T, C5 ~# Z1 f8 k: k/ ~( x" @
如果在关闭外键限制检查后,对外键进行了变更使其不满足外键限制,在RDS MySQL实例运行时不会报错。在重启实例时,由于重启时froeign_key_checks默认开启,InnoDB打开表时会进行外键限制检查,此时会报错。
7 ~2 _: |# P; ]0 e! U, N! i5 N: [  R3 ]8 y+ g' P
常见的情况有以下两种:
  ^6 S' L! ~4 K7 P3 C) S7 A3 Q* l9 _; s7 M6 e
更改了父表和子表外键相关列的字符集
1 a9 a7 O( u: `8 ?; S8 k/ B* `
MySQL 5.6、5.7、8.0允许在foreign_key_checks设置为OFF的情况下,修改父表和子表外键相关列的字符集。实例重启以后:3 G4 k' r5 P7 u5 S. I
+ Y: J1 I! J+ S$ p3 i
MySQL 5.6、5.7会在error log中提示warning,同时无法使用父表。
- W# @8 I/ x7 ^5 N6 j- ]! K  Y' u1 r3 w3 j9 ~+ s" ]
MySQL 8.0不会在error log中提示warning,可以使用父表。
6 s+ |( ?3 U7 L& O$ f: n
- V$ _; T7 e. x- A) S: b删除了父表和子表外键相关列的索引
; ?1 o1 n  S) p/ F$ e. h8 e; W
$ \( F* |+ U- Q" W对于MySQL 5.7、8.0:不允许在foreign_key_checks设置为OFF的情况下,删除父表和子表外键相关列的索引。2 M3 Y7 ?8 I( j) X- n
) L% _3 X7 D. d8 `6 R3 @' R
对于MySQL 5.6:允许在foreign_key_checks设置为OFF的情况下,删除父表和子表外键相关列的索引。删除相关列索引后,重启实例会提示warning,同时被删除索引的表无法使用。" O/ |/ L4 p$ {% z
+ V/ u3 v- ?/ l4 I9 M6 p4 Z; Z
解决方案
: h' ^) w- k0 v对于修改字符集导致的问题,将foreign_key_checks设置为OFF,将父表和子表外键相关列的字符集修改一致。
1 n, q$ _* h! @# ]
+ u  P) ]) L7 b对于删除索引导致的问题,将foreign_key_checks设置为OFF,重建索引。
 楼主| 发表于 2023-9-3 07:12:05 | 显示全部楼层
1、例如,mysql数据库的表内容太大,超过10G可能会影响discuz论坛的运转。
( d- p7 k: `1 o* @3 F; j* m3 m6 X& Q# M$ _5 ~' u
2、这种状况能够经过子数据库的方法来处理。有关详细信息,您能够搜索discuz官方网站以查找相关信息。" R( d- o% {; k

5 ?8 A: S/ p* r* V3、数据库装备过错,有时可能是主机移动,数据库移动等,导致数据库信息填写不正确,或许旧数据库信息未及时更新,例如数据库用户名,暗码,数据库表填充过错。# }) G( J8 y" n, s- j3 \% L% u

5 |  U+ V. U/ T4、您能够修正相关的数据库信息,您能够在config目录中找到config目录,修改数据库信息装备文件。Discus!3有三个参阅装备文件。仔细检查数据库装备和其他装备是否是最新的。
' H+ r3 H% _" i8 h7 a- |7 Y2 c
9 R! q' H! i& e* c5 l! S4 W装置目录/config/config_global.php装置目录/config/config_ucenter.php装置目录/uc_server/data/config.inc.php。有关详细信息,请参阅discuz官方文档。
, C6 ^6 G; Z8 g3 ?; \* Z
, X- X  k9 N+ q9 K' g4 ^% P0 B5、数据库没有运转。
( e9 b& ^" X, b1 z9 }9 D
% Y6 y$ @: _, {% O: {& v6、检查主机的mysql数据库程序是否正在运转或已关闭。假如它是虚拟主机,您能够联络空间提供商以将其打开。假如虚拟主机不支持mysql数据库,则能够经过替换主机或空间提供程序来处理此问题。
1 Z) o. m  @8 J% z& i( ^8 O图片[1]-discuz! database error什么意思(如何解决)-小白之家,discuz!databaseerror如何解决,原因一:数据库表太大  \& Q8 R8 @$ `7 a1 b9 V# w
9 }' p# o: B. }6 m: k
比方mysql数据库的表内容太大,超过10G就有可能会影响discuz论坛的运行。
" _$ w5 s! a; M8 Y2 V
4 a1 S( k9 z$ R, uDiscuz!DatabaseError是什么原因,怎样修正
* K9 t6 i$ A' l- _0 k1 @% {/ k5 J5 f5 O
" U! U1 ]6 {1 n( X这种状况能够经过对数据库分表的方法来解决。% S7 K# M" [: N1 F

# l5 u' ]* l. [/ M) t$ q9 w原因二:数据库装备过错( I+ I7 ~( W1 j9 u1 N: O
% }  q) m+ f. z& f; r2 @) X
有时候可能是主机搬迁、数据库搬迁等,形成数据库信息填写过错,或旧数据库信息没有及时更新等,比方数据库用户名、密码、数据库表填写过错等。
- ?2 v" f( J1 N% D8 W) A8 Q
8 K) t5 C; D; n! o0 \1 F能够批改一下相关数据库信息即可,能够找到config目录,修改config目录中的数据库信息装备文件。Discus!3的参考装备文件有三个,仔细检查一下里面的数据库装备和其他装备是不是最新的。安装目录/config/config_global.php安装目录/config/config_ucenter.php安装目录/uc_server/data/config.inc.php。详细可查阅discuz官方文档。+ ]4 w1 S8 s4 ^4 U2 _

) [* J3 O, L' A* \1 \原因三:数据库没有运行% l+ f( }" I$ K0 e
) M% U% B2 a/ |7 E' W: K
检查一下主机的mysql数据库程序是否正在运行或已经关闭- f# O( J* U$ l/ T- E

; s% w) d( F; H: T原因四:数据库过错( N: K7 H$ l  L- U5 @
6 w4 B6 L6 Y) I  {" p. o
可运用discuz官方小东西Discuz!Tools来对数据库进行修正。到discuz官方下载tools东西,解压上传到网站相关目录,然后打开链接、输入密码,修正数据库->一键修正就行了。修正完成记得删去Discuz!Tools相关文件。
$ c0 i  R9 V1 R" n6 o+ @9 y: ~7 p5 y8 p8 @+ N) I, `5 M
Discuz!DatabaseError是什么原因,怎样修正( x/ L0 [+ F, e- y. t8 t

) D# D% z) ]  n原因五:数据库繁忙
  r) A/ b" [7 Z: j7 K: _( s# @# o: r2 k. Z9 B
能够登录discuz后台,开启【贴子缓存】、【主页缓存】,能够缓解数据库繁忙的问题。
/ \* {5 `& T; R0 p8 I! G, {* m9 I
% w. H. Q8 [% q% u8 jDiscuz!DatabaseError是什么原因,怎样修正
. z( e: C, j6 Z- j4 }- r: s/ H  T5 {% L
详细可参阅discuz官方性能优化的文档。9 I" ^7 `  b# L+ w8 ^8 m9 b. }
6 m1 \9 F/ {# X" Z7 [
Discuz!DatabaseError是什么原因,怎样修正$ G; B. z7 _1 f" n; q
6 {+ k$ @4 _( y2 Z' B
原因六、主机内存不够、不稳定# A* M5 c6 i! A2 b

2 r. ?  b% a; ~也有可能是主机不太稳定,可能是主机内存过小,杀死了mysql进程。
! j9 V/ ]8 h0 V  h: Y2 U( M4 g- i8 b8 m4 u4 A( ~
Discuz!DatabaseError是什么原因,怎样修正
& t% j! x' G! P9 T
! Q0 s# G8 W) S% c原因七:可能是相关软件版别太旧, Y8 Y0 z. X) D) d1 Z0 f

- A% Z  q# {% _/ {3 l比方discuz版别、mysql数据库的版别是不是最新的、php的版别,服务器是否开启相关权限、php权限,是否支撑discuz系统等?
 楼主| 发表于 2023-9-3 07:21:43 | 显示全部楼层
解决方法:0 d5 X  F4 r' l) E
/ P, N& f7 K5 q" `% S7 O3 ~
登陆后台,站长—数据库—升级(Discuz! 数据库升级 - 请将数据库升级语句粘贴在下面:)中执行语句
; n9 |7 x' V8 H6 V* T
6 v  @. y: p$ S# {/ r1 wDELETE FROM `common_setting` WHERE `skey` = 'membersplit'; * O' o- Y  F3 z( q
就可以了,若没有找到执行语句的输入窗口 则修改config/config_global.php 当中的 $_config[admincp][runquery] 设置修改为 1 (为了安全执行完该语句后 确认解决了1146错误后 再将配置该回来 )  刷新后再输入执行。
% S' `5 P0 R4 d3 D1 W1 c6 F
% }/ d7 V2 H: w% H3 S提示:为了数据安全执行该语句前建议备份数据。
 楼主| 发表于 2023-9-3 07:25:28 | 显示全部楼层
论坛后台>>>站长>>>>数据库>>>  升级>>>>>   Discuz! 数据库升级 - 请将数据库升级语句粘贴在下面:
4 q+ p' t) p$ \  l7 B1 F$ q# v) w) [( r4 y
输入:
4 [7 m, V- C5 j# s. m) z7 B4 JDELETE FROM `common_setting` WHERE `skey` = 'membersplit';
' k+ M. M- `% a7 H( I执行即可。- J+ z9 ?5 X% ^, W, r
然后刷新页面即可。8 j) r' S% ?( j( G  Q7 W5 U
/ m3 B6 c* t) b- `
技巧提示
7 x1 D1 C5 l' A6 G- R! k; b% F您可以通过修改 /source/admincp/admincp_quickquery.php 来添加常用 SQL 操作进行功能扩充。% `) ]: w; J0 q# m5 ?1 P
出于安全考虑,Discuz! 后台默认情况下禁止 SQL 语句直接执行,只能使用常用 SQL 当中的内容,, t* Y8 v8 n7 Q) h9 K4 z
如果您想自己随意书写 SQL 升级语句,需要将 config/config_global.php 当中的 $_config[admincp][runquery] 设置修改为 1。5 s7 k) F% O) V3 R5 P0 p' E
8 X/ S: f7 ~) }' `6 ]

# T+ \) z1 d2 z: N3 f3 ADiscuz! 提示) V9 S/ y! H  _- j; S8 V
Discuz! 数据结构升级成功,影响的记录行数 0
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

GMT+8, 2026-4-9 01:00 , Processed in 0.056166 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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