易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 499|回复: 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最新解决办法
5 E3 q' X+ X5 k  |" z( k* aDiscuz! Database Error(1146) Table 'bbs168xcn.common_member_archive' doesn't existSELECT COUNT(*) FROM common_member_archive3 i! b! l# G) P/ Q# Z' P

5 b  Z  y# |( r9 }( T  c) uPHP Debug
/ S9 D1 Z* I* n* l
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()* [) G  O5 d* }$ q7 z/ Q; u, Z
; l0 Q- C7 F% @6 k, U( w5 _. i
. S- M2 E6 Y+ r( `( P

+ V- y- o5 L6 Y1 L
' q, h, T! X8 ^. V% B- L, D; N* G1 |+ b1 i7 U/ D
以前都是进入数据库删除数据:
- ]7 ?% z  e' a3 Amysql> use bbs168xcn
% J; Q2 g: S' q" H  o8 _5 {Reading table information for completion of table and column names
) }9 T, B* U8 TYou can turn off this feature to get a quicker startup with -A9 ]4 J4 E1 f: C) q& Z* I. P) f0 M

' _1 {4 X+ S; D- ^% pDatabase changed
  g5 i8 M" v$ s$ v; {2 Nmysql>  DELETE FROM `common_setting` WHERE `skey` = 'membersplit';
; p, }' s0 w9 ^* tQuery OK, 1 row affected (0.00 sec)" j4 M9 |( r8 Q0 f8 o7 f) w

, `$ |" {2 J/ omysql>6 A/ \  ~; Y! V1 V
* v, i& u5 G8 D. U$ m: L* ~1 F
感觉效果不是很好。
( [0 \* U; v0 U; @) Q/ j. F0 Q
3 B9 a% j0 l2 P. p" ]$ r以下方式比较好的解决这个问题:
. e1 I6 s* _1 g登录到后台>>>>选择论坛>>>>点击板块管理>>>>>随便选择一个板块名称,要求是二级版块,一级版块好像有些不行 >>>>
6 Z( ]5 f0 q8 R7 _$ B# ^# m点击设置复制>>>>>出现的两个框分别是 目标版块项目选择  .>>>>目标版块选择全部(使用crtl+a) >>>>项目选择使用  >>>允许使用【img】代码  >>>点击提交。刷新页面即可。
7 D- e1 E3 U: S2 Y' o! R# U

2 n8 P* o4 }3 ~) q) V: W' @" t1 R3 w4 w2 I/ y0 z0 }" t

点评

1、例如,mysql数据库的表内容太大,超过10G可能会影响discuz论坛的运转。 2、这种状况能够经过子数据库的方法来处理。有关详细信息,您能够搜索discuz官方网站以查找相关信息。 3、数据库装备过错,有时可能是主   发表于 2023-9-3 07:11
 楼主| 发表于 2023-8-19 08:17:52 | 显示全部楼层
经常出现这个问题,怎么回事?
+ N, l9 J: n$ ?  \7 D9 r* E/ N* O: ?
$ f; ?$ I4 k7 b2 q1 N; iDiscuz! Database Error' E; ]" O# e: A# w* j% h  \6 G
(1146) Table 'bbs168xcn.common_member_archive' doesn't exist
; A. y+ w  [& U" Q, ]7 \, CSELECT COUNT(*) FROM common_member_archive. X5 m: n2 v& {
PHP Debug
5 \( z4 o# E( K9 @* |" i+ {6 @" n  Z+ k! z  r: z
No.        File        Line        Code7 m3 }. M) Y( w1 l+ N
1        misc.php        98        require(%s)
5 m* S" O2 y; y+ }! r6 P2        source/module/misc/misc_stat.php        29        getstatvars(%s)* U/ M3 x% b% t3 B+ ~- w: i
3        source/module/misc/misc_stat.php        91        call_user_func(%s, %s)
9 d# \1 P) [$ C6 A4                        getstatvars_basic(%s)4 b; n0 N  o& }" a8 L
5        source/module/misc/misc_stat.php        101        table_common_member->count()
2 k+ F" H8 d) n+ n/ u  E+ N, C: {+ K6        source/class/table/table_common_member.php        172        table_common_member_archive->count(%d)& p( `; h8 C1 i$ s" {( U' G( v/ q
7        source/class/table/table_common_member_archive.php        48        discuz_database::result_first(%s, Array)
' ]( f5 u4 Q. T$ z8        source/class/discuz/discuz_database.php        117        discuz_database::query(%s, Array, false, false)
! c6 H7 s3 _8 C4 e9        source/class/discuz/discuz_database.php        136        db_driver_mysql->query(%s, false, false)8 L0 A: h0 j; t8 x  ^
10        source/class/db/db_driver_mysql.php        153        db_driver_mysql->halt(%s, %d, %s)
/ g1 w: c7 `+ s' T% ~" G11        source/class/db/db_driver_mysql.php        224        break()& M' s/ N" m( C" a- b% f
 楼主| 发表于 2023-9-1 17:17:26 | 显示全部楼层
如果是数据表损坏请尝试修复表! }% U* Q* r! i* F
repair table tablename* q+ C; l+ \) r; |8 j* d' F
 楼主| 发表于 2023-9-1 17:17:37 | 显示全部楼层
mysql> use bbs168xcn
' A+ J0 x8 ?( mReading table information for completion of table and column names6 ^5 I; T$ }4 g3 q6 G
You can turn off this feature to get a quicker startup with -A
" ^3 Y3 e# q# J! L
8 g  _% k3 Q6 I1 w2 C9 {" SDatabase changed$ L; B/ U* G. @6 t1 m) _6 F) c8 ]) z
mysql> delete from `common_setting` where `skey`='membersplit';
. ^0 X0 A+ P5 D& _4 K/ p/ X% NQuery OK, 0 rows affected (0.00 sec)/ H1 r: Y0 H/ E. V7 ~: G* ~
! v: f, a. J4 @$ C! p
mysql> repair table common_setting;
" g1 X# I0 C" g- _4 u+------------------------------+--------+----------+----------+9 O* n  {9 _# z1 O. u8 G
| Table                        | Op     | Msg_type | Msg_text |  L0 o6 w# S# t+ W
+------------------------------+--------+----------+----------+8 U( c* y# h: y5 d$ [5 J) o  O
| bbs168xcn.common_setting | repair | status   | OK       |
  J2 a$ U5 `- B+ a+------------------------------+--------+----------+----------+- H/ m/ {" z+ i& q; I9 N/ E
1 row in set (0.00 sec)% B( {' C) C- Q, v4 S6 N2 `

* Z- j0 r0 P& z6 E4 Z# Amysql> select * from common_setting where 'skey'='membersplit' ;5 b# K5 t' d3 X  ]' ^
Empty set (0.00 sec)
- p  G+ H1 X, `8 K/ j
0 H, @" \  {; f1 X: U7 umysql> delete from `common_setting` where `skey`='membersplit';1 |. L1 X/ }5 O2 ~- ~3 I
Query OK, 0 rows affected (0.00 sec)# v& }- \( u! i8 l, y
' U3 \3 d, S& s$ |' F% S. B7 d
mysql>0 N# V  y$ C% j# t6 p  ?/ \
 楼主| 发表于 2023-9-1 18:05:56 | 显示全部楼层
问题现象
8 ]( x" d( m) w- I1 T在重启RDS MySQL实例后,进行表相关操作时,提示如下错误:: e: L. y! [  ]2 K6 X( b
- l% F4 b$ r# G* n
ERROR 1146 (42S02): Table 'xxx.xxx' doesn't exist' Q1 P7 N) g1 g# G  {+ W/ Y
同时,在error log中可见如下记录:
; W; J2 d. B2 f$ L* i, W1 k# D) C, q: U9 e- p) ~. A
[Warning] InnoDB: Load table `xxx`.`xxx` failed, the table has missing foreign key indexes. Turn off 'foreign_key_checks' and try again.; h! o2 H3 l" c' [( k) U
[Warning] InnoDB: Cannot open table xxx/xxx from the internal data dictionary of InnoDB though the .frm file for the table exists.
6 {) B5 {  U' G& ~1 O可能原因
$ H9 \( K: u( u+ u% w- uMySQL中添加外键需要满足相应条件和限制,详情请见官方文档FOREIGN KEY Constraints。
3 ?; X: m$ g6 b$ C! p5 m' G5 X! i* g* x& P' V) @% B3 g) R
MySQL的外键限制检查是通过变量foreign_key_checks来控制的,该变量可以在RDS MySQL实例运行时修改,不需要重启实例,默认值为ON。若将foreign_key_checks设为OFF,除特殊情况外(详情请参见官方文档FOREIGN KEY Constraints),将关闭外键限制检查。8 T+ T8 ~9 Y! q

- ^6 k/ J/ L7 D# ~  |$ r  k, q如果在关闭外键限制检查后,对外键进行了变更使其不满足外键限制,在RDS MySQL实例运行时不会报错。在重启实例时,由于重启时froeign_key_checks默认开启,InnoDB打开表时会进行外键限制检查,此时会报错。
6 U$ w  e% ]+ Q$ B% O
+ q  T. a$ h4 O- \: }常见的情况有以下两种:
2 i: M- m' O  c9 U( p- z6 a) ]2 r2 Y+ s' R  k
更改了父表和子表外键相关列的字符集' u: @/ l% ~, {

2 z- g( D4 C3 Q! w2 C! SMySQL 5.6、5.7、8.0允许在foreign_key_checks设置为OFF的情况下,修改父表和子表外键相关列的字符集。实例重启以后:# V5 G/ C4 Q  ?. [$ w- i- |

8 R1 z! i0 j, x8 v2 E4 FMySQL 5.6、5.7会在error log中提示warning,同时无法使用父表。7 t4 p- V# X1 S9 _% z! C2 d/ D

' ]0 c) z$ `) J: S$ yMySQL 8.0不会在error log中提示warning,可以使用父表。' `! H7 b. h# f

* e2 k) o: K, L, N0 l: m) N删除了父表和子表外键相关列的索引6 L) ?# V/ g7 e% w
0 S9 C, M9 X# r; C1 m% u
对于MySQL 5.7、8.0:不允许在foreign_key_checks设置为OFF的情况下,删除父表和子表外键相关列的索引。9 @8 n! X, [4 {$ Y1 j
# ?- A" E! B9 G: o5 y/ V
对于MySQL 5.6:允许在foreign_key_checks设置为OFF的情况下,删除父表和子表外键相关列的索引。删除相关列索引后,重启实例会提示warning,同时被删除索引的表无法使用。
  ]) Z2 Z4 t7 A$ `8 c; m
. V- X+ E# I( h: E; ~解决方案
3 K7 c1 D* P. s' B+ `对于修改字符集导致的问题,将foreign_key_checks设置为OFF,将父表和子表外键相关列的字符集修改一致。
  \! M0 H2 |' P) T, c$ L( i& Q0 G2 |1 V" {
对于删除索引导致的问题,将foreign_key_checks设置为OFF,重建索引。
 楼主| 发表于 2023-9-3 07:12:05 | 显示全部楼层
1、例如,mysql数据库的表内容太大,超过10G可能会影响discuz论坛的运转。
. K  U" U. o( o4 V# s! ]8 k5 g* b5 t2 y0 U% K" K
2、这种状况能够经过子数据库的方法来处理。有关详细信息,您能够搜索discuz官方网站以查找相关信息。3 e! p1 n; x2 I1 c  i7 D% a$ R- F+ ]5 `

0 F8 ~. @1 [0 O; w/ s/ n6 @: W3、数据库装备过错,有时可能是主机移动,数据库移动等,导致数据库信息填写不正确,或许旧数据库信息未及时更新,例如数据库用户名,暗码,数据库表填充过错。
+ A+ R5 M3 h: |7 W% T3 \
$ a9 O3 F# ?7 W5 ^& K4 \7 C6 N9 s# {4、您能够修正相关的数据库信息,您能够在config目录中找到config目录,修改数据库信息装备文件。Discus!3有三个参阅装备文件。仔细检查数据库装备和其他装备是否是最新的。" j0 f% w% N) u) F  W
, E" Z2 A. F" i. }
装置目录/config/config_global.php装置目录/config/config_ucenter.php装置目录/uc_server/data/config.inc.php。有关详细信息,请参阅discuz官方文档。
8 I" M4 e/ h$ C: i2 y& g
2 y! j" w$ a  |( ?1 a5、数据库没有运转。
$ [, G/ S" \; p5 e- f# R- l1 y9 u5 f7 A: E4 Y( s1 y
6、检查主机的mysql数据库程序是否正在运转或已关闭。假如它是虚拟主机,您能够联络空间提供商以将其打开。假如虚拟主机不支持mysql数据库,则能够经过替换主机或空间提供程序来处理此问题。4 b( e0 a' K3 N, S
图片[1]-discuz! database error什么意思(如何解决)-小白之家,discuz!databaseerror如何解决,原因一:数据库表太大
$ |. {" X4 C, @# w. l. `3 T2 v) x0 P6 h$ d8 u. u- }
比方mysql数据库的表内容太大,超过10G就有可能会影响discuz论坛的运行。$ l" s0 |2 C  i8 b& h

0 U9 o3 Q9 n( i: Z( ]  CDiscuz!DatabaseError是什么原因,怎样修正) M1 O( l. Y/ Q& l  a
$ n+ F8 l5 x) O, W% \
这种状况能够经过对数据库分表的方法来解决。3 o* F; c8 h$ g8 C/ \5 s9 G

# \+ _  t. ?2 Q# Y! S# M原因二:数据库装备过错
: ~) t& E' n7 b' G8 Y
; W) F0 }7 t$ I: a, ]有时候可能是主机搬迁、数据库搬迁等,形成数据库信息填写过错,或旧数据库信息没有及时更新等,比方数据库用户名、密码、数据库表填写过错等。
& d# ~& X& N0 ~& |- b6 U2 S- Y
' j) L( T: ]4 ~# i能够批改一下相关数据库信息即可,能够找到config目录,修改config目录中的数据库信息装备文件。Discus!3的参考装备文件有三个,仔细检查一下里面的数据库装备和其他装备是不是最新的。安装目录/config/config_global.php安装目录/config/config_ucenter.php安装目录/uc_server/data/config.inc.php。详细可查阅discuz官方文档。
' }4 L4 l! P4 _( F$ i# n' V' T  f  _8 Y
原因三:数据库没有运行
9 E% }2 j7 _* @" u! l! R0 o8 o* T% V, M  M
检查一下主机的mysql数据库程序是否正在运行或已经关闭
+ Q" {, X" {* R6 F( x( z/ I) u% E, e4 _, p$ m& f, T* V  z
原因四:数据库过错
' q+ x5 P  {5 q5 i0 Z6 g1 g( I( D0 c! E
可运用discuz官方小东西Discuz!Tools来对数据库进行修正。到discuz官方下载tools东西,解压上传到网站相关目录,然后打开链接、输入密码,修正数据库->一键修正就行了。修正完成记得删去Discuz!Tools相关文件。- l& f4 y& q7 x! t8 d
' ?6 t7 }9 G/ Y8 w5 D9 j
Discuz!DatabaseError是什么原因,怎样修正2 u: Y1 f  ]! K7 B  o% s# C

5 A; s" n' t) c, b) {* E原因五:数据库繁忙5 M& g/ O; n. F5 J- I
% p8 t+ l) I( o
能够登录discuz后台,开启【贴子缓存】、【主页缓存】,能够缓解数据库繁忙的问题。
! F7 n: E& [$ D, e( N3 K/ E) \
9 c2 x+ Z! q/ w( @2 X( `0 ~( _% hDiscuz!DatabaseError是什么原因,怎样修正6 G$ G' L; P: k7 c( l
# [! x, P1 y* L0 p: [
详细可参阅discuz官方性能优化的文档。- n6 @' i. G/ U6 w. b
# \/ @2 o. i. e
Discuz!DatabaseError是什么原因,怎样修正
- {' D4 [3 q9 {/ W  _2 S3 s: c
原因六、主机内存不够、不稳定
; _4 T$ X) [& a7 ?0 O5 I
# T. S9 q0 l6 }) A% k也有可能是主机不太稳定,可能是主机内存过小,杀死了mysql进程。
% t  k; M2 y1 f& w  M, C3 K8 P6 A9 W2 r4 m' |0 S% M0 Z
Discuz!DatabaseError是什么原因,怎样修正3 @& }  P8 c+ O3 {  Z: L

1 `4 Y+ m3 N, b原因七:可能是相关软件版别太旧
- h. \$ [+ N( S- x% y9 B7 c; q1 ^) g5 C9 K5 u
比方discuz版别、mysql数据库的版别是不是最新的、php的版别,服务器是否开启相关权限、php权限,是否支撑discuz系统等?
 楼主| 发表于 2023-9-3 07:21:43 | 显示全部楼层
解决方法:: R/ P& a, K# E& l4 i6 `6 {& w; `
' \: ?7 P* L. l# E% Q, Z! e! {
登陆后台,站长—数据库—升级(Discuz! 数据库升级 - 请将数据库升级语句粘贴在下面:)中执行语句* j. ~/ n" B4 U' U

! w  j% M3 O/ W6 M* G! b2 W. IDELETE FROM `common_setting` WHERE `skey` = 'membersplit';
! k3 X6 b5 ^# x就可以了,若没有找到执行语句的输入窗口 则修改config/config_global.php 当中的 $_config[admincp][runquery] 设置修改为 1 (为了安全执行完该语句后 确认解决了1146错误后 再将配置该回来 )  刷新后再输入执行。1 Y- X1 J, ^1 a# @
) k* V2 u; Q. f0 E7 Y
提示:为了数据安全执行该语句前建议备份数据。
 楼主| 发表于 2023-9-3 07:25:28 | 显示全部楼层
论坛后台>>>站长>>>>数据库>>>  升级>>>>>   Discuz! 数据库升级 - 请将数据库升级语句粘贴在下面:
8 s, F7 }' P8 s& Y# _0 @: E9 ^: S* }' Q% s5 q' f6 ?
输入:% _: _7 _# Q( q3 d8 L
DELETE FROM `common_setting` WHERE `skey` = 'membersplit';
& f0 ~9 Q% G+ X. y. x; Z执行即可。
9 Z, [9 x; u( w3 H7 p1 K  C8 a% K! y然后刷新页面即可。3 r5 Z) b+ f5 @$ K/ J

1 [! }1 @4 r3 ^技巧提示
  i" X" _1 I/ a* d3 \您可以通过修改 /source/admincp/admincp_quickquery.php 来添加常用 SQL 操作进行功能扩充。
2 M9 A4 F9 @4 Z2 ]. q2 e出于安全考虑,Discuz! 后台默认情况下禁止 SQL 语句直接执行,只能使用常用 SQL 当中的内容,
; w' ?; n4 J2 Z0 p如果您想自己随意书写 SQL 升级语句,需要将 config/config_global.php 当中的 $_config[admincp][runquery] 设置修改为 1。! t4 D* ^4 i# D2 j4 ]- M

+ n6 J' b: b" g1 \
, l' `- p: v' J' ]9 T9 w1 bDiscuz! 提示
2 P% ^- n4 I: S, S6 [+ G$ fDiscuz! 数据结构升级成功,影响的记录行数 0
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

GMT+8, 2026-4-8 23:53 , Processed in 0.066726 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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