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

openstack 清理keystone token数据

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-11-18 18:53:19 | 显示全部楼层 |阅读模式
登录数据库,执行命令:( a$ I2 S  u. z$ q! D
MariaDB [keystone]>  delete from keystone.token where user_id="14687393c47346beb4a6b95232e5d434";0 R' ^1 B) `& k) d4 ^% o& |( P7 e/ A6 {
MariaDB [keystone]> delete from keystone.token where user_id='14687393c47346beb4a6b95232e5d434';
5 X, @6 B2 q$ L% H6 o' q
9 t- M: B  ]# J+ T1 B% h# v使用truncat 方式清楚数据库中的表数据:
$ H) e  H; r9 U$ J" dMariaDB [keystone]> truncate table token;$ {& p# ]8 m' x8 X/ f: _

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-11-18 19:29:42 | 显示全部楼层
TRUNCATE 关键字用于完全清空一个表。其语法格式如下:
% S0 V* C- x$ ~) |% i6 }3 H
; G' D# E! R+ c, R3 {( n8 ^5 |TRUNCATE [TABLE] 表名0 x( j1 i1 \0 u# p
其中,TABLE 关键字可省略。2 L% W7 Q. O; A2 \; d

5 n9 @7 V2 U8 q/ P( @1 d例 1
# ]8 \6 P3 h" n+ t新建表 tb_student_course,插入数据并查询,SQL 语句和运行结果如下:
2 O! P' B' x% s0 B" [5 C7 ]" N' o( y# u
复制代码, F: Y& K# P7 R& E$ n
mysql> CREATE TABLE `tb_student_course` (' ?- M; S1 P: ?& o% i- C$ K1 _
    -> `id` int(4) NOT NULL AUTO_INCREMENT,
' ?5 d, F2 H/ k  U7 b. ?! y    -> `name` varchar(25) NOT NULL,
) [- {, R+ w( |, {" E; s: e5 {8 u    -> PRIMARY KEY (`id`)3 G; }; V1 ^$ o) d2 K7 A, H1 U0 a
    -> );- A( U; m" R& N& M+ Z% @
Query OK, 0 rows affected (0.04 sec). P8 ~* q) k; M' A( S. E

6 a. @/ H. l* i$ Dmysql> INSERT INTO tb_student_course(name) VALUES ('Java'),('MySQL'),('Python');
" G' R6 A: G/ V! o) L7 PQuery OK, 3 rows affected (0.05 sec)1 C$ ^+ r4 q" Q
Records: 3  Duplicates: 0  Warnings: 0# q5 G" B0 M& r. q$ c! O

7 A6 \  k& X- w# Vmysql> SELECT * FROM tb_student_course;
4 N0 U/ M& |, A& U0 n( ?& e2 x+----+--------+
1 ]; [& D9 r4 J' V| id | name   |
- ^9 ], e1 z0 j  O+----+--------+
% `" @4 f# ]8 M: V- S|  1 | Java   |
3 O+ @. O& T  Z7 u1 w|  2 | MySQL  |* P; |8 Q0 Q# g( j
|  3 | Python |
/ q- {. j* j$ A+----+--------+( _/ a+ n' @# _
3 rows in set (0.00 sec)0 a8 `; \" F6 ^' F3 n2 a7 M
复制代码
, i" S$ T- _+ m$ |' d使用 TRUNCATE 语句清空 tb_student_course 表中的记录,SQL 语句和运行结果如下:
( L! W1 E  E! W- k3 W( Y/ |3 d) |- Z
mysql> TRUNCATE TABLE tb_student_course;
5 }7 q) ?& Q5 MQuery OK, 0 rows affected (0.04 sec)
( O: |% `: [% g0 @  D+ K
/ v4 U4 T! ]& E* ~$ h) n7 Emysql> SELECT * FROM tb_student_course;
2 A. y( O  ?1 z  AEmpty set (0.00 sec)  n) \7 e( |. K/ m
复制代码% p2 a* l) n' |$ }
TRUNCATE 和 DELETE 的区别(再次强调)
  C6 x& [! R+ C% B1 a3 ^& g从逻辑上说,TRUNCATE 语句与 DELETE 语句作用相同,但是在某些情况下,两者在使用上有所区别。
8 e0 J# J$ ^6 b# T: bDELETE 是 DML 类型的语句;TRUNCATE 是 DDL 类型的语句。它们都用来清空表中的数据。1 m' C. b; U2 G7 Z. W
DELETE 是逐行一条一条删除记录的;TRUNCATE 则是直接删除原来的表,再重新创建一个一模一样的新表,而不是逐行删除表中的数据,执行数据比 DELETE 快。0 A0 p9 u1 W6 r- X
  因此需要删除表中全部的数据行时,尽量使用 TRUNCATE 语句, 可以缩短执行时间。
* C/ F; o7 |; T! H( VDELETE 删除数据后,配合事件回滚可以找回数据;TRUNCATE 不支持事务的回滚,数据删除后无法找回。: d: A: ]2 K) n0 p
DELETE 删除数据后,系统不会重新设置自增字段的计数器;TRUNCATE 清空表记录后,系统会重新设置自增字段的计数器。% l, t7 w3 d2 L
DELETE 的使用范围更广,因为它可以通过 WHERE 子句指定条件来删除部分数据;而 TRUNCATE 不支持 WHERE 子句,只能删除整体。
* h! {: x6 Z4 oDELETE 会返回删除数据的行数,但是 TRUNCATE 只会返回 0,没有任何意义。
6 x* s4 Q! w: ^1 L' d2 K. O复制代码3 I  p4 k3 q4 p& i& J; f% l7 T
3.truncate使用场景及注意事项
& P+ F$ N* y" P8 j& t: M  通过前面介绍,我们很容易得出truncate语句的使用场景,即该表数据完全不需要时可以用truncate。
" ^. V: G, q1 `5 c& B% C/ o
3 p. U8 [! N  i5 f7 m; X  如果想删除部分数据用delete,注意带上where子句;如果想删除表,当然用drop;如果想保留表而将所有数据删除且和事务无关,用truncate即可;
# y' @  d$ x: ?! _% F6 `
4 H  i  H% G. F$ H  如果和事务有关,或者想触发trigger,还是用delete;如果是整理表内部的碎片,可以用truncate然后再重新插入数据。
9 o# j7 u) h! P, f/ M' u
" ]+ j# F0 i+ d2 F  q无论怎样,truncate表都是高危操作,特别是在生产环境要更加小心,下面列出几点注意事项,希望大家使用时可以做下参考。/ G6 [" {3 W4 Q" u
8 t$ L; ~0 s  I
truncate无法通过binlog回滚。' |7 R( M/ g& L: N3 ~: C/ [7 H
truncate会清空所有数据且执行速度很快。
# Y  n$ I' A6 K' O' a8 Itruncate不能对有外键约束引用的表使用。
& q' m- }) B, V$ ~执行truncate需要drop权限,不建议给账号drop权限。' r* B. _. l8 R1 \4 |5 n) p# T1 ~
执行truncate前一定要再三检查确认,最好提前备份下表数据。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-11-23 14:05:07 | 显示全部楼层
MariaDB [(none)]> delete from keystone.token where user_id='14687393c47346beb4a6b95232e5d434';
4 Z- R/ L5 O: P% ?- O
# F4 F& H  V2 g, L2 w% ~4 O# S, \^CCtrl-C -- query killed. Continuing normally.
0 x$ P. ^! _7 g. w- J  u; [7 L) b& _/ n  Z% Z( g
^CCtrl-C -- query killed. Continuing normally.
+ b# M$ p1 ~, B- @) O& VERROR 2013 (HY000): Lost connection to MySQL server during query
9 p+ F% o1 n1 ]$ n6 h7 o- NMariaDB [(none)]> truncate table keystone.token;
6 s+ w/ d, o$ D! `! S8 C/ c( J5 \ERROR 2006 (HY000): MySQL server has gone away' B0 h1 M1 ^: O% j, Z9 ]
No connection. Trying to reconnect...* n% g' j0 o3 I
Connection id:    3385 X7 l' {) S, z% ]; L
Current database: *** NONE ***
8 e) U& z) \: bQuery OK, 0 rows affected (1.21 sec)
4 O5 M2 s  l4 f; r
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 02:17 , Processed in 0.014358 second(s), 21 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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