找回密码
 注册
查看: 509|回复: 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最新解决办法
3 _5 y' P# l3 b6 R' q0 |' t. ?Discuz! Database Error(1146) Table 'bbs168xcn.common_member_archive' doesn't existSELECT COUNT(*) FROM common_member_archive
" P4 I: n" B8 e) t/ P2 _) N
1 e, h" e& T4 j- b7 B: I4 [
PHP Debug( ?) u9 [2 N2 m7 G
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()
. Z7 G! j, v4 Q- T' Q7 K
. Y3 z  h/ F. w% a; U* P& R
) [! E2 x$ O+ i1 g4 h
4 n9 }/ i/ G* r1 e4 v# Q' Y# _/ ?
) ?/ k9 t7 N8 t- w

4 J- \- p. X1 r6 V! K6 R( i; B以前都是进入数据库删除数据:
# ]6 e. d+ M* o1 Lmysql> use bbs168xcn
7 ~* S. `: O' y0 bReading table information for completion of table and column names" @# A0 \& ^- q! I, P) l
You can turn off this feature to get a quicker startup with -A, e$ q9 `$ _. _/ k; y3 T) D

1 S& J/ m/ l1 C0 U8 u: s* \: WDatabase changed7 d, N% L. C$ `, B. v
mysql>  DELETE FROM `common_setting` WHERE `skey` = 'membersplit';) v5 m9 a) t+ [9 W+ [
Query OK, 1 row affected (0.00 sec)6 v) G! V1 ?4 M) T8 }
/ w& U7 R. B8 C
mysql>: F; n) F; V3 V, P4 V7 G
& l0 t5 L2 S! K: O3 R* k+ N! r
感觉效果不是很好。
( c- v' D6 i- `
- o! {% V4 ~3 c4 q, {! |! c以下方式比较好的解决这个问题:
# f/ t+ T! g; G, M4 ~) R登录到后台>>>>选择论坛>>>>点击板块管理>>>>>随便选择一个板块名称,要求是二级版块,一级版块好像有些不行 >>>>. K6 I+ V: |3 ^1 i
点击设置复制>>>>>出现的两个框分别是 目标版块项目选择  .>>>>目标版块选择全部(使用crtl+a) >>>>项目选择使用  >>>允许使用【img】代码  >>>点击提交。刷新页面即可。& [) t, w( B+ O' G' _4 A

0 D# v( C2 s# O* J! r7 s* {: K" p3 w* \* p

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-8-19 08:17:52 | 显示全部楼层
经常出现这个问题,怎么回事?2 g1 g7 q) c' O4 d5 K) S1 |
5 s% i2 W4 X& l, T! J# M; t9 |
Discuz! Database Error
9 v  b- p/ ^2 L( f$ ~4 Z(1146) Table 'bbs168xcn.common_member_archive' doesn't exist
4 S: W3 o: G8 ^  L/ B; L, @* zSELECT COUNT(*) FROM common_member_archive
1 Q) e- n3 c& V/ \% S1 XPHP Debug
. [3 l3 M  m; n) U
- w3 n2 ?$ {& p" Z+ h4 V4 hNo.        File        Line        Code- X. D  F; g0 z( A3 L
1        misc.php        98        require(%s)8 H. u$ U7 I# C
2        source/module/misc/misc_stat.php        29        getstatvars(%s)5 m/ U' y/ i# J7 j. ?. v8 D
3        source/module/misc/misc_stat.php        91        call_user_func(%s, %s), o( o+ U# k8 [+ |
4                        getstatvars_basic(%s)+ Y1 v7 i1 {$ b, d
5        source/module/misc/misc_stat.php        101        table_common_member->count()( O, x' y* b- m. ?, c' D
6        source/class/table/table_common_member.php        172        table_common_member_archive->count(%d)2 `$ U6 r( }  W) B3 L4 [
7        source/class/table/table_common_member_archive.php        48        discuz_database::result_first(%s, Array)
8 t' C8 P1 H( _0 v# F; P! P% j8        source/class/discuz/discuz_database.php        117        discuz_database::query(%s, Array, false, false)
, C1 Z) y7 b  D' R, i+ X8 b6 E9        source/class/discuz/discuz_database.php        136        db_driver_mysql->query(%s, false, false)" d3 R+ K- J( [7 O' G
10        source/class/db/db_driver_mysql.php        153        db_driver_mysql->halt(%s, %d, %s)
) e1 b: i: Y+ w) B) k11        source/class/db/db_driver_mysql.php        224        break()5 Z* j- Z  R' ]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-1 17:17:26 | 显示全部楼层
如果是数据表损坏请尝试修复表3 N! d$ M3 ^2 J# a$ T3 P0 K
repair table tablename: p$ d0 U/ T: u( J8 I! o6 H

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-1 17:17:37 | 显示全部楼层
mysql> use bbs168xcn
6 S) c* s  F! Q( w6 P0 ?! k1 t( JReading table information for completion of table and column names' I( v7 w: N$ z( o$ Y
You can turn off this feature to get a quicker startup with -A/ h( Y2 m0 d' x2 y" H) ^

( }# v7 N  j( DDatabase changed. L4 A/ n$ R% }! Q0 ^9 r. I
mysql> delete from `common_setting` where `skey`='membersplit';# j, ^( _2 B/ ?1 k
Query OK, 0 rows affected (0.00 sec)
! r$ [4 K/ I# c5 e' ]- u9 f* x8 A1 [2 U$ N2 q# @/ g
mysql> repair table common_setting;  u6 [# L+ B( Z
+------------------------------+--------+----------+----------+
4 m4 T7 y: P5 b| Table                        | Op     | Msg_type | Msg_text |1 ?* |) {  @8 Z8 ~4 u1 C1 V2 P
+------------------------------+--------+----------+----------+) W/ a% f" {% |+ \- U: c
| bbs168xcn.common_setting | repair | status   | OK       |
2 }' [: i' e; o: J" \+------------------------------+--------+----------+----------+! e; l; v: U9 E) u" Q$ m
1 row in set (0.00 sec)
# i# I* A8 E' b3 o- e7 ?. {2 Q1 J% a* X1 h( ^
mysql> select * from common_setting where 'skey'='membersplit' ;7 Y9 c& {, W5 l8 a
Empty set (0.00 sec)
+ ^: c+ S1 |) V, j5 c3 i; P3 D6 {) G
mysql> delete from `common_setting` where `skey`='membersplit';
* `. v& U9 u7 O9 O8 e' [7 ~Query OK, 0 rows affected (0.00 sec)
6 p4 H: Y& R# v3 ?2 ^# K1 g, Q; J2 `% {4 V7 i6 E% W+ d
mysql>" o- f3 h0 Y0 x8 Q0 k; |& [

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-1 18:05:56 | 显示全部楼层
问题现象% ?* W+ t5 e0 f& ^8 s* ?4 ~
在重启RDS MySQL实例后,进行表相关操作时,提示如下错误:& X! u9 f- ^, Q( E. S* @) j( E. W
2 @3 h1 z$ d; `
ERROR 1146 (42S02): Table 'xxx.xxx' doesn't exist
- Y7 R! n; C- L5 V# d同时,在error log中可见如下记录:
" r1 ~! k& Y! Q2 m! [2 z
" J% a! ]' y$ h  u( ]  L[Warning] InnoDB: Load table `xxx`.`xxx` failed, the table has missing foreign key indexes. Turn off 'foreign_key_checks' and try again.
) u$ L  c. M$ O& v9 N, ][Warning] InnoDB: Cannot open table xxx/xxx from the internal data dictionary of InnoDB though the .frm file for the table exists.6 m% ^3 Q/ ?7 u9 I
可能原因
, Z) q  L$ O& _' f. ]4 [  T9 SMySQL中添加外键需要满足相应条件和限制,详情请见官方文档FOREIGN KEY Constraints。8 t: s, a: d1 K/ @  |: H" {
0 W( N# G/ v" }  f/ }7 S3 z
MySQL的外键限制检查是通过变量foreign_key_checks来控制的,该变量可以在RDS MySQL实例运行时修改,不需要重启实例,默认值为ON。若将foreign_key_checks设为OFF,除特殊情况外(详情请参见官方文档FOREIGN KEY Constraints),将关闭外键限制检查。
2 X% J1 l/ F5 ^/ Z3 N8 P! O9 _2 T) @, O# B: M  N+ p5 B
如果在关闭外键限制检查后,对外键进行了变更使其不满足外键限制,在RDS MySQL实例运行时不会报错。在重启实例时,由于重启时froeign_key_checks默认开启,InnoDB打开表时会进行外键限制检查,此时会报错。$ `6 i' J9 j4 m
6 |& e' z, ]4 O  @4 }
常见的情况有以下两种:! l6 @) ]9 v% o! R. q+ |, G3 L8 y

% z+ i2 N1 t8 y6 h9 Z0 [更改了父表和子表外键相关列的字符集  o1 E- @, s" G% T' U: |

8 E! F# M6 p" [9 ^; WMySQL 5.6、5.7、8.0允许在foreign_key_checks设置为OFF的情况下,修改父表和子表外键相关列的字符集。实例重启以后:
: a, \/ R2 f) d" \% j1 q/ z6 a
# W$ J7 b; w) a. @& LMySQL 5.6、5.7会在error log中提示warning,同时无法使用父表。2 {/ L* |) b' g& b

- Y: B* V* \6 x" }MySQL 8.0不会在error log中提示warning,可以使用父表。
3 a! x$ Y' G6 e9 N: N, I5 E# O9 Y+ f+ N% Z: j' Y2 ]
删除了父表和子表外键相关列的索引
3 T  N4 s6 S: F* O/ n4 ?" h9 s- n: X# ?$ ?5 K* I5 _& c, S1 r
对于MySQL 5.7、8.0:不允许在foreign_key_checks设置为OFF的情况下,删除父表和子表外键相关列的索引。
5 [& a, [4 H# T9 B. g4 @1 ]+ p7 O8 t4 ?; T
对于MySQL 5.6:允许在foreign_key_checks设置为OFF的情况下,删除父表和子表外键相关列的索引。删除相关列索引后,重启实例会提示warning,同时被删除索引的表无法使用。
( E+ w$ T% ~( }2 M0 h( X6 v" ^, o. D2 X! m
解决方案/ h4 n  [; _# p6 V# d+ W0 W7 ?
对于修改字符集导致的问题,将foreign_key_checks设置为OFF,将父表和子表外键相关列的字符集修改一致。
) x( a- H4 E+ Y% d8 N
: t' \3 m! y3 y8 T: `8 H对于删除索引导致的问题,将foreign_key_checks设置为OFF,重建索引。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-3 07:12:05 | 显示全部楼层
1、例如,mysql数据库的表内容太大,超过10G可能会影响discuz论坛的运转。  w- D/ y& m1 n+ ^/ g' t

. K' E5 u* V( _2 j5 [* f# R+ L2、这种状况能够经过子数据库的方法来处理。有关详细信息,您能够搜索discuz官方网站以查找相关信息。
+ G" W  L- l8 x6 k1 [! l. r
* Z7 Z! [9 y- }' A3、数据库装备过错,有时可能是主机移动,数据库移动等,导致数据库信息填写不正确,或许旧数据库信息未及时更新,例如数据库用户名,暗码,数据库表填充过错。
3 r) L0 t  g- @& B7 k
! N( k+ p) @0 A* w' n: V4、您能够修正相关的数据库信息,您能够在config目录中找到config目录,修改数据库信息装备文件。Discus!3有三个参阅装备文件。仔细检查数据库装备和其他装备是否是最新的。
# G9 S' h$ P8 w- `
  e' a7 h) f4 o5 N装置目录/config/config_global.php装置目录/config/config_ucenter.php装置目录/uc_server/data/config.inc.php。有关详细信息,请参阅discuz官方文档。
9 e& k& r+ n* X; Z# v7 e2 X$ e+ W$ n  q
5、数据库没有运转。
+ u8 U! i! k; j' H. U' G6 T0 j* L2 d$ r( X- y# r; f  [% e) c" s3 B& S
6、检查主机的mysql数据库程序是否正在运转或已关闭。假如它是虚拟主机,您能够联络空间提供商以将其打开。假如虚拟主机不支持mysql数据库,则能够经过替换主机或空间提供程序来处理此问题。* [4 @9 w: O' c5 F5 R
图片[1]-discuz! database error什么意思(如何解决)-小白之家,discuz!databaseerror如何解决,原因一:数据库表太大7 J. Z+ B' F# ]( s

, ?7 y7 s' V+ o8 e) s) q( w* Q比方mysql数据库的表内容太大,超过10G就有可能会影响discuz论坛的运行。
# N; W% Y4 j! |
$ w" J" b: }5 {& }2 i, @& C, v6 oDiscuz!DatabaseError是什么原因,怎样修正6 l3 m3 H; W5 _

  m& l6 F/ p, o! Z+ V  o# \' d这种状况能够经过对数据库分表的方法来解决。
9 ?: Z. @# E* ]5 b1 Y5 F; Y. t% _( N' E! o
原因二:数据库装备过错
( w+ ?* _) b! a6 R, k) g% b9 ~* D& S. _( \0 y1 Q, u! |' b
有时候可能是主机搬迁、数据库搬迁等,形成数据库信息填写过错,或旧数据库信息没有及时更新等,比方数据库用户名、密码、数据库表填写过错等。
6 \$ U- l, G" C" I7 o0 Z8 t+ H7 {& [/ s# K2 H  n
能够批改一下相关数据库信息即可,能够找到config目录,修改config目录中的数据库信息装备文件。Discus!3的参考装备文件有三个,仔细检查一下里面的数据库装备和其他装备是不是最新的。安装目录/config/config_global.php安装目录/config/config_ucenter.php安装目录/uc_server/data/config.inc.php。详细可查阅discuz官方文档。) O+ [) f4 K, N8 j" g* i* o7 q; h

. R8 Y0 a, o+ J. |8 }原因三:数据库没有运行3 l. {% X7 S5 I! v+ u5 J
0 S0 q+ x/ u; y& Q0 B) {
检查一下主机的mysql数据库程序是否正在运行或已经关闭( B; T* ~% J+ m  Y( p" D
( F8 H8 |0 Q6 Z) @) [* l. e5 S5 h/ j
原因四:数据库过错
& n+ q/ a; B; K3 V: ]
  p* I- H" U& B* a( K6 u% V可运用discuz官方小东西Discuz!Tools来对数据库进行修正。到discuz官方下载tools东西,解压上传到网站相关目录,然后打开链接、输入密码,修正数据库->一键修正就行了。修正完成记得删去Discuz!Tools相关文件。
% x4 f0 B: w8 P* ~/ e
3 w' U  x1 c/ R! p- ^# Y/ k, iDiscuz!DatabaseError是什么原因,怎样修正
) v& B; ]3 b$ @  n. l! |/ V, @6 }3 F% x( u. |1 Z' V
原因五:数据库繁忙
1 i1 a5 U: D) f& ^0 X  C0 {0 e! ^! F
能够登录discuz后台,开启【贴子缓存】、【主页缓存】,能够缓解数据库繁忙的问题。
" Y) O  I8 n0 v4 w" L* K- j& H" k) I3 e1 \+ H5 f2 ?
Discuz!DatabaseError是什么原因,怎样修正
2 k0 P, i# Z( J2 N/ |
' F- w2 v; d' f详细可参阅discuz官方性能优化的文档。
( n( O& D; t5 _& S& b
# T+ s0 {$ X1 R* x. k6 ADiscuz!DatabaseError是什么原因,怎样修正. R) Y% m# B  }) C' f% W" z% I: K

" F* W6 l  j2 L  J+ w6 W3 ]原因六、主机内存不够、不稳定4 m8 \) s& D  S+ t( J! s
* j: N6 j# \: [" a; P1 l
也有可能是主机不太稳定,可能是主机内存过小,杀死了mysql进程。% D: E( c8 `: J' f
/ L  Y$ [1 V- Q) P$ P3 G
Discuz!DatabaseError是什么原因,怎样修正
0 w; i. l8 |, F: K# v% A: d! s1 y0 j* R7 C0 @0 T% b4 H$ O
原因七:可能是相关软件版别太旧0 D$ C% n2 C$ _, e/ [8 e3 s

0 W" R8 `4 e/ ]$ T- ~* @比方discuz版别、mysql数据库的版别是不是最新的、php的版别,服务器是否开启相关权限、php权限,是否支撑discuz系统等?

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-3 07:21:43 | 显示全部楼层
解决方法:
, d, `8 h( ?' f7 H/ y/ t4 k& X$ k
$ \" w+ {* s+ U! P: \' Q登陆后台,站长—数据库—升级(Discuz! 数据库升级 - 请将数据库升级语句粘贴在下面:)中执行语句! I! Q  Z! Y+ U

, v1 M. A/ t/ B2 `* ^+ J5 IDELETE FROM `common_setting` WHERE `skey` = 'membersplit';
2 x: ^2 b* F& }就可以了,若没有找到执行语句的输入窗口 则修改config/config_global.php 当中的 $_config[admincp][runquery] 设置修改为 1 (为了安全执行完该语句后 确认解决了1146错误后 再将配置该回来 )  刷新后再输入执行。
5 T# A+ N  m/ s( ^( ?% o$ t7 m' x5 |9 u* H$ U1 b5 \5 Z  s) M
提示:为了数据安全执行该语句前建议备份数据。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-3 07:25:28 | 显示全部楼层
论坛后台>>>站长>>>>数据库>>>  升级>>>>>   Discuz! 数据库升级 - 请将数据库升级语句粘贴在下面: + Y% R( ]" P+ w7 O2 u
3 @8 ?/ s: _, f( q# `
输入:" p. v. [! T5 ~1 M* S
DELETE FROM `common_setting` WHERE `skey` = 'membersplit';
* |9 R& k5 z3 B* w" \" K0 x执行即可。
4 J8 Z7 a! L/ @5 g% j% p! U7 M! r( a然后刷新页面即可。2 E" O. l( @( v0 x1 I5 m

% K/ H/ j' N3 W; k, S4 U& n  L# l# u技巧提示: q9 R7 S! l. P: h% [2 X/ u
您可以通过修改 /source/admincp/admincp_quickquery.php 来添加常用 SQL 操作进行功能扩充。% H* `' ~9 h0 h3 m3 F+ \! ?! {
出于安全考虑,Discuz! 后台默认情况下禁止 SQL 语句直接执行,只能使用常用 SQL 当中的内容,
9 Y) [) f. \6 \( h如果您想自己随意书写 SQL 升级语句,需要将 config/config_global.php 当中的 $_config[admincp][runquery] 设置修改为 1。
4 E* p" W: ]0 ^4 o7 a5 Q- D
0 k& K- z5 L  R. y0 I, R
  N& j) t5 s; ^- W2 U7 MDiscuz! 提示
! h- O2 }- S' N+ q; q  ADiscuz! 数据结构升级成功,影响的记录行数 0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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