易陆发现互联网技术论坛

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

openstack 清理keystone token数据

[复制链接]
发表于 2021-11-18 18:53:19 | 显示全部楼层 |阅读模式

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

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

x
登录数据库,执行命令:
% q1 ?/ Y" @+ Y' g0 O4 q2 g6 V% oMariaDB [keystone]>  delete from keystone.token where user_id="14687393c47346beb4a6b95232e5d434";
/ T2 Z3 W: y% a4 _9 g) W" eMariaDB [keystone]> delete from keystone.token where user_id='14687393c47346beb4a6b95232e5d434';$ D" n7 \3 s% L' N( D7 p' k

% [% ^# D# I# ?2 z) n' u/ T8 O; z: h使用truncat 方式清楚数据库中的表数据:- @5 c( d8 j8 ~, e3 q
MariaDB [keystone]> truncate table token;# Q8 J- @6 @$ C$ |% Z1 j1 C
 楼主| 发表于 2021-11-18 19:29:42 | 显示全部楼层
TRUNCATE 关键字用于完全清空一个表。其语法格式如下:
" l7 R1 G: w/ t! G1 J& z7 q, O  K4 d6 E$ H/ q
TRUNCATE [TABLE] 表名; G% Q, f7 J. D5 X0 z4 T
其中,TABLE 关键字可省略。8 ?8 h5 B' \  r: U$ u+ ~

2 C; |% f7 ]4 {例 19 ]# V7 l# m5 j& Q6 T6 Q7 t2 G$ C% G
新建表 tb_student_course,插入数据并查询,SQL 语句和运行结果如下:& U. x; p6 ]( t: n6 c
& Z" A2 J5 A) f5 D
复制代码  n: P! Y& o* m( l
mysql> CREATE TABLE `tb_student_course` (6 m. {. I6 B4 h5 I- {
    -> `id` int(4) NOT NULL AUTO_INCREMENT,
6 V3 I( y+ ]& S. `2 u7 W    -> `name` varchar(25) NOT NULL,
3 s( h5 b: q  f+ a    -> PRIMARY KEY (`id`)
! `+ Z( R3 l7 ~4 m* Q, ]    -> );
. W( E$ s1 Y. v, M3 C& \) ZQuery OK, 0 rows affected (0.04 sec)
5 f: p% ?* I' M* M) u( b# p, V* n+ ?
8 ?+ k' j; J# H0 amysql> INSERT INTO tb_student_course(name) VALUES ('Java'),('MySQL'),('Python');; [- d+ R( J/ t1 F* [5 _7 P
Query OK, 3 rows affected (0.05 sec)
$ h1 n7 C, t7 [7 a. Y/ e  c5 mRecords: 3  Duplicates: 0  Warnings: 0
1 A5 T$ a1 E  f+ f( @
' l2 B' s" V5 W" z) C6 Emysql> SELECT * FROM tb_student_course;
, |1 c; e) f1 |8 O' |/ Q8 }+----+--------+  M1 |& j8 q" S5 @
| id | name   |/ p! j& M0 s9 O& [7 I% D: d
+----+--------+
" C3 G4 z1 {* R' K" _|  1 | Java   |' H" ?. N& q0 J9 w; p
|  2 | MySQL  |( h  g% y9 |7 ?, W
|  3 | Python |. x) h& C# f+ G1 @. |  x
+----+--------+
4 q4 R5 ^0 K  C) K$ F3 rows in set (0.00 sec)) H' G" f- W, g# v) N3 g
复制代码
4 w& ?! O9 J& E$ N0 X使用 TRUNCATE 语句清空 tb_student_course 表中的记录,SQL 语句和运行结果如下:( t. F; @3 U" R* ?' ]0 b

$ N9 u9 h9 v" Z$ B, I2 Mmysql> TRUNCATE TABLE tb_student_course;
" e  Y$ @6 [+ J. ~/ C, P! |* u# NQuery OK, 0 rows affected (0.04 sec)
* M) H7 K  b+ _. b$ L$ \1 [
4 Q- ^$ l1 w: {2 a& O4 U! Lmysql> SELECT * FROM tb_student_course;' i. I( }  P' ~' @) P
Empty set (0.00 sec)
' g$ w5 K! `& j5 r0 m/ D复制代码
5 @+ g0 d9 M) X: O0 v2 w) RTRUNCATE 和 DELETE 的区别(再次强调)& ?- k0 A! a" J6 c% w* g
从逻辑上说,TRUNCATE 语句与 DELETE 语句作用相同,但是在某些情况下,两者在使用上有所区别。% q, r9 y8 x8 G3 v
DELETE 是 DML 类型的语句;TRUNCATE 是 DDL 类型的语句。它们都用来清空表中的数据。
; P3 S5 Z/ _4 a7 S+ v2 n" t- u# ?DELETE 是逐行一条一条删除记录的;TRUNCATE 则是直接删除原来的表,再重新创建一个一模一样的新表,而不是逐行删除表中的数据,执行数据比 DELETE 快。
, B- e/ v6 M& x% {2 S' C% j  因此需要删除表中全部的数据行时,尽量使用 TRUNCATE 语句, 可以缩短执行时间。
. {7 B; Q& _/ A3 d) |) z( jDELETE 删除数据后,配合事件回滚可以找回数据;TRUNCATE 不支持事务的回滚,数据删除后无法找回。  u; w4 h# `( G, U
DELETE 删除数据后,系统不会重新设置自增字段的计数器;TRUNCATE 清空表记录后,系统会重新设置自增字段的计数器。
0 V. v4 }& L$ _: LDELETE 的使用范围更广,因为它可以通过 WHERE 子句指定条件来删除部分数据;而 TRUNCATE 不支持 WHERE 子句,只能删除整体。/ U, Y9 \* Y2 I: ^
DELETE 会返回删除数据的行数,但是 TRUNCATE 只会返回 0,没有任何意义。
0 ~6 |: ~( C& ?- L* J. k6 M) Z复制代码. t8 @& B. c% s6 \% R% P
3.truncate使用场景及注意事项
: ~7 L6 t8 Y7 J- U& I& X' h  通过前面介绍,我们很容易得出truncate语句的使用场景,即该表数据完全不需要时可以用truncate。9 a- t% Q# R- c. R
3 M  n0 _: K; _
  如果想删除部分数据用delete,注意带上where子句;如果想删除表,当然用drop;如果想保留表而将所有数据删除且和事务无关,用truncate即可;1 e/ e' O7 y# r' d4 m% T  q5 @: Q

' h/ J& u7 D  _7 }0 m  如果和事务有关,或者想触发trigger,还是用delete;如果是整理表内部的碎片,可以用truncate然后再重新插入数据。
) v6 m  Z3 V/ A' S8 Q
0 m% `4 w7 N6 v, p' i8 v$ t6 ]无论怎样,truncate表都是高危操作,特别是在生产环境要更加小心,下面列出几点注意事项,希望大家使用时可以做下参考。: Z4 e. V, m: V( P8 x6 I6 h# J
$ v: F3 C  w. \8 r7 N0 A
truncate无法通过binlog回滚。1 o6 A* b9 c) G8 K+ n0 b
truncate会清空所有数据且执行速度很快。' W0 M. P# c9 b- |- C) @1 I7 F
truncate不能对有外键约束引用的表使用。/ L% u8 [& S& l$ F9 n, ^
执行truncate需要drop权限,不建议给账号drop权限。* ?- u+ I% j/ a9 O
执行truncate前一定要再三检查确认,最好提前备份下表数据。
 楼主| 发表于 2021-11-23 14:05:07 | 显示全部楼层
MariaDB [(none)]> delete from keystone.token where user_id='14687393c47346beb4a6b95232e5d434';1 L/ y0 i9 o7 B4 A1 ?) B% N4 D+ ]
0 z/ N3 n" t0 v9 f7 M( F( t$ c9 f% k
^CCtrl-C -- query killed. Continuing normally.. d3 r5 E) K* e8 ^& W: G
9 w7 t7 J+ Q1 i- t0 o* N6 ?, U
^CCtrl-C -- query killed. Continuing normally.
7 J$ `: c- y0 |  L& E! n: RERROR 2013 (HY000): Lost connection to MySQL server during query* i% ~% ?$ E0 }. c. W5 i6 l5 g
MariaDB [(none)]> truncate table keystone.token;: v; }! K( c( o* W7 `5 `  J
ERROR 2006 (HY000): MySQL server has gone away
9 S$ V. F) l" X( g( L& P3 JNo connection. Trying to reconnect..." x) M" A3 F8 a/ a6 _$ {# C
Connection id:    3388 d' K3 I$ o3 I3 V
Current database: *** NONE ***
, s6 y) f* \& S! ]$ E& [/ e2 qQuery OK, 0 rows affected (1.21 sec)) T) E. t% j; V5 ]" V3 X
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

GMT+8, 2026-4-8 21:25 , Processed in 0.051047 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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