找回密码
 注册
查看: 507|回复: 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最新解决办法
( _# S( Z5 z/ {3 LDiscuz! Database Error(1146) Table 'bbs168xcn.common_member_archive' doesn't existSELECT COUNT(*) FROM common_member_archive/ B/ f. F5 V8 R  a; a$ y- V% ^/ U

& S* R  f8 e1 ]) SPHP Debug
4 w1 v1 @' F$ z  y. D
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()4 G/ Q9 J, `8 t8 V4 s

; l" O& }8 `7 x+ U4 |

! k. a8 H% z4 x! H- V9 C2 ^( G' ~2 H, |* o# K
! ~: t9 w7 p, s$ b1 q
3 n0 \/ T4 Q1 v3 x8 e
以前都是进入数据库删除数据:; i& h) l6 e5 Y3 Y" Z9 c0 Z
mysql> use bbs168xcn1 C  F5 t* f4 h" r
Reading table information for completion of table and column names; }: \% W! ?7 _' L- U
You can turn off this feature to get a quicker startup with -A
; Z2 y8 b) q* n* z. q- c' Z: J5 b# x+ P: Z; ^: R8 d& }2 Z
Database changed' x) D& X: r( h
mysql>  DELETE FROM `common_setting` WHERE `skey` = 'membersplit';
, ?$ Y1 y8 ?$ o) UQuery OK, 1 row affected (0.00 sec)
" h7 V/ Y( m: }# D9 g& K0 \0 H  u' I8 D. G, H, J
mysql>, A4 h/ a; i6 Y0 b
0 J1 C: k/ V& H$ ?4 K; @
感觉效果不是很好。' r7 `, j, s# X' w9 e2 x
: m: J- h& n2 W, K) X$ G
以下方式比较好的解决这个问题:7 }8 m1 a1 b. w, O# x: ~: L
登录到后台>>>>选择论坛>>>>点击板块管理>>>>>随便选择一个板块名称,要求是二级版块,一级版块好像有些不行 >>>>. b( a) p2 w8 Q6 Y! B# u' T* S# U7 H
点击设置复制>>>>>出现的两个框分别是 目标版块项目选择  .>>>>目标版块选择全部(使用crtl+a) >>>>项目选择使用  >>>允许使用【img】代码  >>>点击提交。刷新页面即可。
# _) m* l/ `& f4 V2 C% s3 |
* y' |% s" q6 y, Q/ d# q

5 w' e1 j4 E4 n3 b- M# k4 ~. \3 W

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-8-19 08:17:52 | 显示全部楼层
经常出现这个问题,怎么回事?4 c. z2 {1 i* Q0 q/ {

+ P( z/ P( I, r9 O. ^1 {+ v4 `' qDiscuz! Database Error
/ E' L- o. b2 ?1 a# [(1146) Table 'bbs168xcn.common_member_archive' doesn't exist/ F; b  I" e3 |0 v. I* [
SELECT COUNT(*) FROM common_member_archive" h3 R7 u* d5 C0 a1 u
PHP Debug% U4 l; \$ i* x  t! `: u* a& y

* Q, x& h* O. g/ ^  ]No.        File        Line        Code' P# |' V- c, h( b1 h! B
1        misc.php        98        require(%s)% K8 J% `: S1 J2 G- C6 R
2        source/module/misc/misc_stat.php        29        getstatvars(%s)9 _& ?" I0 H+ d7 e1 g
3        source/module/misc/misc_stat.php        91        call_user_func(%s, %s)/ n# V. k% O' i" N, Z5 k+ ?
4                        getstatvars_basic(%s)
7 J- w8 h: J* R5 ?5        source/module/misc/misc_stat.php        101        table_common_member->count()( L6 w, T  ?. P
6        source/class/table/table_common_member.php        172        table_common_member_archive->count(%d)
$ G' F0 q$ w6 c  U+ z7        source/class/table/table_common_member_archive.php        48        discuz_database::result_first(%s, Array)
9 K$ T/ h4 A& i9 ?8        source/class/discuz/discuz_database.php        117        discuz_database::query(%s, Array, false, false)1 H$ r0 B% j3 R9 |+ G: x" ]" K/ u
9        source/class/discuz/discuz_database.php        136        db_driver_mysql->query(%s, false, false)6 I; x  Q1 ]. @
10        source/class/db/db_driver_mysql.php        153        db_driver_mysql->halt(%s, %d, %s)0 ^- ]; u, r* t8 y2 a8 W; J
11        source/class/db/db_driver_mysql.php        224        break(): d% [! {8 M2 S6 I8 J2 J& t

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-1 17:17:26 | 显示全部楼层
如果是数据表损坏请尝试修复表
, O* Z: m5 W; O1 L0 \. H* ^repair table tablename6 e* A; s6 N3 G' ?9 @: ]( A2 v0 Y% [+ Z

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-1 17:17:37 | 显示全部楼层
mysql> use bbs168xcn; z- o  k1 @( Y: H! s
Reading table information for completion of table and column names
  c* J# J3 C+ oYou can turn off this feature to get a quicker startup with -A
+ `. A* z) c6 o* m. U+ k! T
& ^/ h: d: Y- q* b8 l' E4 w  vDatabase changed
3 f2 @- \9 v  e' J+ d, m( vmysql> delete from `common_setting` where `skey`='membersplit';$ M! _: l0 P" w
Query OK, 0 rows affected (0.00 sec)+ z! U, q' V4 t1 X

  _8 R' W+ f- `% V, Fmysql> repair table common_setting;( s' U' D- B: z# W/ `
+------------------------------+--------+----------+----------+" \! u# _+ E; N- V* u
| Table                        | Op     | Msg_type | Msg_text |4 @! U, F! |+ F% _+ P
+------------------------------+--------+----------+----------+
, K0 i% i3 p4 x| bbs168xcn.common_setting | repair | status   | OK       |
. C: R2 H) `! y8 O+------------------------------+--------+----------+----------++ Q# L" [& D2 A) h: n
1 row in set (0.00 sec)
; f3 h0 a7 l0 b3 I+ Y. \: F1 X  y) @* D6 ?
mysql> select * from common_setting where 'skey'='membersplit' ;
! i# t! E- @5 HEmpty set (0.00 sec)( A" |- e5 c  R7 J1 p

' W; G: E6 X( R5 n9 Jmysql> delete from `common_setting` where `skey`='membersplit';
9 F4 E' d2 S. u! v1 l( TQuery OK, 0 rows affected (0.00 sec)3 T, y/ W. A5 c: h* n$ n+ E% a
9 G+ Q3 E5 q9 ]6 q: l  @. g
mysql>" h2 ^( K4 q1 X" y3 g' q! v: q

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-1 18:05:56 | 显示全部楼层
问题现象5 e& i$ m/ a8 t; u
在重启RDS MySQL实例后,进行表相关操作时,提示如下错误:
# i6 @. T, [; M' F2 u* G% ?7 R& ?: z) s0 \- b1 X) D0 g8 b8 O$ ^
ERROR 1146 (42S02): Table 'xxx.xxx' doesn't exist
9 c9 e  s1 v/ f同时,在error log中可见如下记录:
  k$ C- Z; i) ?) s( x6 r7 c9 W- Q; Z
[Warning] InnoDB: Load table `xxx`.`xxx` failed, the table has missing foreign key indexes. Turn off 'foreign_key_checks' and try again.# v2 W& \  l9 m+ ]# D
[Warning] InnoDB: Cannot open table xxx/xxx from the internal data dictionary of InnoDB though the .frm file for the table exists.8 @# l) P. o# F% T3 T
可能原因* Y, i% a8 o; d9 I$ Z9 s
MySQL中添加外键需要满足相应条件和限制,详情请见官方文档FOREIGN KEY Constraints。8 t) Y( q9 m/ ^& k- O& [

. N) }) E1 c, }1 e! cMySQL的外键限制检查是通过变量foreign_key_checks来控制的,该变量可以在RDS MySQL实例运行时修改,不需要重启实例,默认值为ON。若将foreign_key_checks设为OFF,除特殊情况外(详情请参见官方文档FOREIGN KEY Constraints),将关闭外键限制检查。9 q& S5 U8 `, l! C2 c8 A2 i3 _

& A# i: j. k  N$ N* v+ ~, b3 Q5 l如果在关闭外键限制检查后,对外键进行了变更使其不满足外键限制,在RDS MySQL实例运行时不会报错。在重启实例时,由于重启时froeign_key_checks默认开启,InnoDB打开表时会进行外键限制检查,此时会报错。
* i5 g1 u, P6 J% A' d! m7 ^1 e9 V$ O
常见的情况有以下两种:, [: J6 s5 @: f- v" }
3 U4 Y; Y0 Q" E6 x  |( c* B/ R' w4 W
更改了父表和子表外键相关列的字符集; l' A, \% A6 h# B$ a) {; q

5 g0 Q3 R+ I( D5 w) ]5 q  [$ SMySQL 5.6、5.7、8.0允许在foreign_key_checks设置为OFF的情况下,修改父表和子表外键相关列的字符集。实例重启以后:
$ t+ ^0 n/ P( T! E* u- _3 v6 {3 s( g* P. [4 R$ S  j
MySQL 5.6、5.7会在error log中提示warning,同时无法使用父表。
3 W" q' ~5 K$ @& U! r2 [/ J4 l
& t7 G& o! ^/ P" D; kMySQL 8.0不会在error log中提示warning,可以使用父表。6 ?( \' D6 m, e' @$ R( @2 F2 _
, G- `0 ^, d' }. v; W1 {# m/ s+ q1 R
删除了父表和子表外键相关列的索引) K* y; Z' B8 q- z( Y, b

0 m5 Q$ Q' j. F0 F3 K0 t对于MySQL 5.7、8.0:不允许在foreign_key_checks设置为OFF的情况下,删除父表和子表外键相关列的索引。
4 c3 d& \1 |% k( n( u; h( {" V& e# o% k( ^7 h) H3 U2 `, m5 C
对于MySQL 5.6:允许在foreign_key_checks设置为OFF的情况下,删除父表和子表外键相关列的索引。删除相关列索引后,重启实例会提示warning,同时被删除索引的表无法使用。1 N" w% ~% K" g$ B

  R2 p& f. ]- U2 G3 D, O/ z解决方案; o9 Z+ I- w' N0 l& p
对于修改字符集导致的问题,将foreign_key_checks设置为OFF,将父表和子表外键相关列的字符集修改一致。& \5 S8 @& U6 z: l# g1 t2 [& z
7 U8 d8 ~7 o  g7 S; n; G# j
对于删除索引导致的问题,将foreign_key_checks设置为OFF,重建索引。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-3 07:12:05 | 显示全部楼层
1、例如,mysql数据库的表内容太大,超过10G可能会影响discuz论坛的运转。6 p) ]0 o) M2 U5 Z# L' p4 D

% i$ b, K/ Z0 o# [2 v4 e2、这种状况能够经过子数据库的方法来处理。有关详细信息,您能够搜索discuz官方网站以查找相关信息。3 S* n/ [; K* z0 M8 @

0 Y6 J3 r1 x# \4 B' A2 ?2 |; [  G3、数据库装备过错,有时可能是主机移动,数据库移动等,导致数据库信息填写不正确,或许旧数据库信息未及时更新,例如数据库用户名,暗码,数据库表填充过错。: q  d: O- Q' w
. k! O+ x5 ^& D, P4 q7 `
4、您能够修正相关的数据库信息,您能够在config目录中找到config目录,修改数据库信息装备文件。Discus!3有三个参阅装备文件。仔细检查数据库装备和其他装备是否是最新的。$ Y. j: E% j+ b

% Y, S! ^* l4 `3 B$ |% v& z% i装置目录/config/config_global.php装置目录/config/config_ucenter.php装置目录/uc_server/data/config.inc.php。有关详细信息,请参阅discuz官方文档。4 h0 p1 l/ I8 n4 w

! f9 ^6 {/ A& \. I& C! [5、数据库没有运转。
  e: j" z$ B( C% f& A1 ]3 x( J, N3 z0 l; X  U0 T. s2 S- Y+ k3 m3 C
6、检查主机的mysql数据库程序是否正在运转或已关闭。假如它是虚拟主机,您能够联络空间提供商以将其打开。假如虚拟主机不支持mysql数据库,则能够经过替换主机或空间提供程序来处理此问题。
3 A( N' f9 R( D; t- N  Y8 c# _1 G图片[1]-discuz! database error什么意思(如何解决)-小白之家,discuz!databaseerror如何解决,原因一:数据库表太大
+ ?0 u: w1 h3 _: O$ B6 c/ A0 M6 o
比方mysql数据库的表内容太大,超过10G就有可能会影响discuz论坛的运行。  M+ I6 y4 |5 d# ?3 @, Z7 s

5 w7 ]! g/ Y" m. i' I! z' nDiscuz!DatabaseError是什么原因,怎样修正+ N: Z7 Q( Z5 u) {& Y7 E: j
# c0 z, j$ s6 l. m' Y
这种状况能够经过对数据库分表的方法来解决。
9 d- o8 o& w4 Y, V. a+ g9 d$ g1 s0 ]7 K7 g8 V9 W
原因二:数据库装备过错! g3 [( w$ V3 P

; T# _+ w5 O' O6 w0 e: a9 v有时候可能是主机搬迁、数据库搬迁等,形成数据库信息填写过错,或旧数据库信息没有及时更新等,比方数据库用户名、密码、数据库表填写过错等。2 w( H: ~, d3 x' ^

  N% r+ d4 R, X4 y/ ~( w& f能够批改一下相关数据库信息即可,能够找到config目录,修改config目录中的数据库信息装备文件。Discus!3的参考装备文件有三个,仔细检查一下里面的数据库装备和其他装备是不是最新的。安装目录/config/config_global.php安装目录/config/config_ucenter.php安装目录/uc_server/data/config.inc.php。详细可查阅discuz官方文档。6 Y- G7 g2 L  Q6 F3 @- |; |& g
( o+ a+ @+ K2 m5 {' _7 s) c
原因三:数据库没有运行- D8 J4 N" m. Q7 r) I# \6 F
- E9 Z7 C2 f7 D3 b. T: m
检查一下主机的mysql数据库程序是否正在运行或已经关闭) D& F; G3 c7 H5 A) P" d0 c& ?
) w1 a+ g5 F3 L4 L% R
原因四:数据库过错% g8 S- `/ `! p4 o$ y5 G
5 ?& _$ y, z, M$ y- v7 I+ g9 k
可运用discuz官方小东西Discuz!Tools来对数据库进行修正。到discuz官方下载tools东西,解压上传到网站相关目录,然后打开链接、输入密码,修正数据库->一键修正就行了。修正完成记得删去Discuz!Tools相关文件。
% l" v/ K+ Q* [; g. V; f9 Z6 u; \. S1 e7 ~2 A5 w' i' I5 B' V- X6 z
Discuz!DatabaseError是什么原因,怎样修正, A; d' ]3 s/ |% P) ^! V, H

( X8 t8 b" G- e原因五:数据库繁忙5 e# V- |  w. M4 w/ h( F5 h

( j. |$ e1 ]* i( }4 e$ q& ^6 J能够登录discuz后台,开启【贴子缓存】、【主页缓存】,能够缓解数据库繁忙的问题。7 u! o: X: E6 P
4 S$ W  g5 j6 G# K0 Z
Discuz!DatabaseError是什么原因,怎样修正
7 [3 _1 b- L2 z4 m: O3 B' m' d7 |' Y" V/ R$ q, ]5 Q2 e4 U4 J
详细可参阅discuz官方性能优化的文档。
% A. }, J' W, {7 l9 S4 l& W0 g% U4 A. E
Discuz!DatabaseError是什么原因,怎样修正
, m( G1 s. d2 N; V( ?5 t
. f3 h- D: R/ i6 g7 N1 ~! I原因六、主机内存不够、不稳定# T* k+ e9 V, k' d5 y

" M) t0 l- n3 K; j  M# n也有可能是主机不太稳定,可能是主机内存过小,杀死了mysql进程。& Q7 Q/ U4 K* l; G% I6 g' E

- i" \2 h: n& }1 ^Discuz!DatabaseError是什么原因,怎样修正
* I8 y' b% L' n, S( b2 H/ I, _  \5 [5 G1 r
原因七:可能是相关软件版别太旧
0 V7 k+ b  P* ]) K  J& o* P1 f- l
- l% ?. `. H/ C3 l7 ^& [4 B比方discuz版别、mysql数据库的版别是不是最新的、php的版别,服务器是否开启相关权限、php权限,是否支撑discuz系统等?

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-3 07:21:43 | 显示全部楼层
解决方法:
* G1 O/ G: F6 s6 f( }/ Q* Z. Z- o% T' _. O9 N' f* a
登陆后台,站长—数据库—升级(Discuz! 数据库升级 - 请将数据库升级语句粘贴在下面:)中执行语句
$ O; M+ _6 U/ @( |$ x+ K' z+ f$ }/ o# K/ ?
DELETE FROM `common_setting` WHERE `skey` = 'membersplit';
1 h# N7 u" ]3 F4 [! I8 S就可以了,若没有找到执行语句的输入窗口 则修改config/config_global.php 当中的 $_config[admincp][runquery] 设置修改为 1 (为了安全执行完该语句后 确认解决了1146错误后 再将配置该回来 )  刷新后再输入执行。
9 N) n; \' I3 k" S6 W! W: g. N; F+ v
提示:为了数据安全执行该语句前建议备份数据。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2023-9-3 07:25:28 | 显示全部楼层
论坛后台>>>站长>>>>数据库>>>  升级>>>>>   Discuz! 数据库升级 - 请将数据库升级语句粘贴在下面: 4 r  {) I6 E; \! s
+ Q# ^& v  I- h. f0 ~
输入:" B2 P8 ^3 m  @7 r, O6 J5 e
DELETE FROM `common_setting` WHERE `skey` = 'membersplit';
* J+ s, V# s5 T4 z5 l5 s执行即可。
3 Z& q, ~5 {5 M. f: a! I2 d+ P然后刷新页面即可。5 Q- d5 s8 n* t' }

) M) U" g  M1 r3 n5 n技巧提示+ k7 y0 t! v8 o( G& m+ W4 e
您可以通过修改 /source/admincp/admincp_quickquery.php 来添加常用 SQL 操作进行功能扩充。
; N7 N, T; W9 i& x& @出于安全考虑,Discuz! 后台默认情况下禁止 SQL 语句直接执行,只能使用常用 SQL 当中的内容,
9 O# K- O8 H, S- ]如果您想自己随意书写 SQL 升级语句,需要将 config/config_global.php 当中的 $_config[admincp][runquery] 设置修改为 1。; U! s. d2 B# l

2 W( n* }" f' w& B! m
3 V+ Q. A0 o9 gDiscuz! 提示; O# t2 U+ W- J7 z' }5 W
Discuz! 数据结构升级成功,影响的记录行数 0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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