找回密码
 注册
查看: 1480|回复: 2

openstack 清理keystone token数据

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-11-18 18:53:19 | 显示全部楼层 |阅读模式
登录数据库,执行命令:) G3 {+ b. z3 a: J7 L# u7 P
MariaDB [keystone]>  delete from keystone.token where user_id="14687393c47346beb4a6b95232e5d434";) a# K. O$ T) p5 O& S
MariaDB [keystone]> delete from keystone.token where user_id='14687393c47346beb4a6b95232e5d434';
, n- I/ r: ]) L' W' H9 g+ ~+ @) S
使用truncat 方式清楚数据库中的表数据:
8 X. _6 W) C3 g5 F) iMariaDB [keystone]> truncate table token;, X$ W/ J/ v6 {4 Z

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-11-18 19:29:42 | 显示全部楼层
TRUNCATE 关键字用于完全清空一个表。其语法格式如下:
  J3 o4 v: l, ^2 l$ I: v8 u
2 d; G& ]  v3 |9 N' v$ ZTRUNCATE [TABLE] 表名8 k/ ?  J: ^, ?; J" p% q: ?% [
其中,TABLE 关键字可省略。
6 z2 ]% g8 {: [5 [6 a) ^0 J  N& f4 z3 @1 @( Y+ Q# G! D" X
例 1
+ ?4 k; X# C6 @新建表 tb_student_course,插入数据并查询,SQL 语句和运行结果如下:
$ G7 M* ]4 ?/ y4 O! l* [, {* A0 `& s' {! E9 e
复制代码! _7 \8 J6 a9 W# _3 t  h
mysql> CREATE TABLE `tb_student_course` (
. H2 V' R5 a/ N: P, K( }    -> `id` int(4) NOT NULL AUTO_INCREMENT,
; J' ~, y- d. }    -> `name` varchar(25) NOT NULL,
- u2 z: T7 X# Z; N. Q9 q    -> PRIMARY KEY (`id`)
/ R1 f3 [. l0 [5 Q+ X% o    -> );
5 ^' e/ N0 f. |! \5 z8 aQuery OK, 0 rows affected (0.04 sec)
9 J2 I: F* d/ t9 P
* h: V' U4 q1 W/ U5 K! p+ {mysql> INSERT INTO tb_student_course(name) VALUES ('Java'),('MySQL'),('Python');. L: E* L: _' I: P4 b
Query OK, 3 rows affected (0.05 sec)
5 c# c4 ~+ F6 |9 ]9 gRecords: 3  Duplicates: 0  Warnings: 0
5 P; n% B1 V' m# l& `+ x" n1 t2 r8 |% K' r: A' t
mysql> SELECT * FROM tb_student_course;- O( G+ H: O; O$ [$ Q* y
+----+--------+
6 j5 n! s2 R" j( E| id | name   |
) x9 h, v" v0 R! D6 ?9 }: ^6 m, i+----+--------+( {, O# L- ]# W6 Y& p* ^; w
|  1 | Java   |9 z( g6 s2 O7 h( k9 y0 @* ^6 K% j
|  2 | MySQL  |$ @; \( r" Z3 T- |7 I/ w: q1 }
|  3 | Python |
! z  z2 X  q  w+ i: z. w+----+--------+% U. h; z0 x& V5 ]+ H* y3 Q
3 rows in set (0.00 sec)
4 c" c, c0 M  X& ]' A7 \& L/ H$ ~; @复制代码
  ]3 H3 F, {8 G) D$ [使用 TRUNCATE 语句清空 tb_student_course 表中的记录,SQL 语句和运行结果如下:
) s2 s# D0 Q8 H. ], ?% X! [  o  O. R% z  u8 v+ T
mysql> TRUNCATE TABLE tb_student_course;
2 ~. ]$ U% _4 D9 g4 IQuery OK, 0 rows affected (0.04 sec)7 L8 g) B1 x  X: K- _7 v: s
3 Y( J' u9 x! D. \" e7 j* r/ r
mysql> SELECT * FROM tb_student_course;0 H& V: @7 X; E! F6 D+ n) c
Empty set (0.00 sec)+ M5 g$ I8 g7 c7 ^6 ~
复制代码
! o) A! h* m. D* s- ?% aTRUNCATE 和 DELETE 的区别(再次强调)2 O1 _3 \  f( c( D) K1 I
从逻辑上说,TRUNCATE 语句与 DELETE 语句作用相同,但是在某些情况下,两者在使用上有所区别。2 N! U; y; \4 M0 o
DELETE 是 DML 类型的语句;TRUNCATE 是 DDL 类型的语句。它们都用来清空表中的数据。# H5 A& |; C- o+ c* J! C- r( H8 a
DELETE 是逐行一条一条删除记录的;TRUNCATE 则是直接删除原来的表,再重新创建一个一模一样的新表,而不是逐行删除表中的数据,执行数据比 DELETE 快。8 q* F4 e: ^# X  Y  r4 R% y
  因此需要删除表中全部的数据行时,尽量使用 TRUNCATE 语句, 可以缩短执行时间。* R# z3 w4 C. ~( p2 O3 s/ }$ Y
DELETE 删除数据后,配合事件回滚可以找回数据;TRUNCATE 不支持事务的回滚,数据删除后无法找回。
8 I- t1 N& N! A  K$ x0 e. v2 TDELETE 删除数据后,系统不会重新设置自增字段的计数器;TRUNCATE 清空表记录后,系统会重新设置自增字段的计数器。
3 J/ I, W' _+ E6 nDELETE 的使用范围更广,因为它可以通过 WHERE 子句指定条件来删除部分数据;而 TRUNCATE 不支持 WHERE 子句,只能删除整体。
3 r8 p! A8 t2 W( \  rDELETE 会返回删除数据的行数,但是 TRUNCATE 只会返回 0,没有任何意义。
- Z1 L, `: c/ _复制代码- q, t8 X5 Z( Q
3.truncate使用场景及注意事项, N; R8 `) V5 N, Z, Q' r! L4 H
  通过前面介绍,我们很容易得出truncate语句的使用场景,即该表数据完全不需要时可以用truncate。
8 @7 o) N' \; U
/ D" h0 Y: s" I6 w  如果想删除部分数据用delete,注意带上where子句;如果想删除表,当然用drop;如果想保留表而将所有数据删除且和事务无关,用truncate即可;
8 D$ y/ t# y* i9 B$ {; N+ r  |. y0 U' U( k3 p! X
  如果和事务有关,或者想触发trigger,还是用delete;如果是整理表内部的碎片,可以用truncate然后再重新插入数据。5 j: K. O) t5 C! G
7 x2 t! e+ E8 n5 Z6 T
无论怎样,truncate表都是高危操作,特别是在生产环境要更加小心,下面列出几点注意事项,希望大家使用时可以做下参考。
0 `9 m/ y$ y' f2 j# J" S+ ?; p/ Q
truncate无法通过binlog回滚。
! V8 `5 T7 k7 E5 _; D6 i' ~truncate会清空所有数据且执行速度很快。  I1 z% {3 p# K$ r6 r
truncate不能对有外键约束引用的表使用。) o" l2 B" E* k& N% H
执行truncate需要drop权限,不建议给账号drop权限。# g2 w# G/ V( ?- a7 f5 }
执行truncate前一定要再三检查确认,最好提前备份下表数据。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-11-23 14:05:07 | 显示全部楼层
MariaDB [(none)]> delete from keystone.token where user_id='14687393c47346beb4a6b95232e5d434';
0 A( {+ B# B5 E! a6 Q/ A  F; W1 C* ~
^CCtrl-C -- query killed. Continuing normally.
' C! E* j2 n( T! D% f; Q6 `% [/ r! \% ]2 S' Q  g1 h  i4 T# P
^CCtrl-C -- query killed. Continuing normally.+ y7 I& X$ j/ e9 y. j
ERROR 2013 (HY000): Lost connection to MySQL server during query# Q3 `% z( a  T) C+ L
MariaDB [(none)]> truncate table keystone.token;* y+ g2 e) l  P, K4 @
ERROR 2006 (HY000): MySQL server has gone away  S7 K- v! v" x  \9 N) ?6 Q
No connection. Trying to reconnect...) z3 R( z; K: ^$ F& Y2 `
Connection id:    338
0 Q7 w) c6 L4 z. N' z. FCurrent database: *** NONE ***$ J( Z' \( I: y* C
Query OK, 0 rows affected (1.21 sec). f( L. ]+ A1 Q# H" i* C
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 02:09 , Processed in 0.021386 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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