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

openstack 清理keystone token数据

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-11-18 18:53:19 | 显示全部楼层 |阅读模式
登录数据库,执行命令:
: e/ {! k: i' p7 K& ~MariaDB [keystone]>  delete from keystone.token where user_id="14687393c47346beb4a6b95232e5d434";: ?0 {' s8 M# o+ Q# B
MariaDB [keystone]> delete from keystone.token where user_id='14687393c47346beb4a6b95232e5d434';- H# F9 \3 P8 w- w/ R
( O- k2 ~- |0 l6 ?: P; l' y- Z9 \7 p
使用truncat 方式清楚数据库中的表数据:: V6 A9 S2 W$ e$ X! e1 w0 m2 H4 E$ f
MariaDB [keystone]> truncate table token;9 J* T6 p5 O& _' i) B; C7 h

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-11-18 19:29:42 | 显示全部楼层
TRUNCATE 关键字用于完全清空一个表。其语法格式如下:
; r! \7 Y- A6 B7 V  z" L+ E8 c5 O1 ]9 B% m
TRUNCATE [TABLE] 表名
. E! k2 j5 I, d$ m3 \其中,TABLE 关键字可省略。6 X3 |7 ]+ K! {- E) D' x' M( U
+ T) W. l, X" h9 ?
例 1
* t! ~# |: u5 D) y! I7 H新建表 tb_student_course,插入数据并查询,SQL 语句和运行结果如下:
6 w; W* ^( P  Q5 h3 p) P/ E, Q) L' R- z) X+ p( c
复制代码
5 y7 `" D- J% D2 v. a+ L0 V. vmysql> CREATE TABLE `tb_student_course` (
2 w+ [$ y+ T: [& L    -> `id` int(4) NOT NULL AUTO_INCREMENT,
+ i& Z  k3 x$ }$ b% U0 S& V    -> `name` varchar(25) NOT NULL,
9 O! a9 \7 [' O, L5 E; G# w4 |    -> PRIMARY KEY (`id`)
  I3 t3 `. _5 e& F* r    -> );$ x% g3 a; y0 n$ D0 ^  D
Query OK, 0 rows affected (0.04 sec)
+ O8 u: N# @9 H2 p1 _+ u1 s4 c6 R# W: B4 a
mysql> INSERT INTO tb_student_course(name) VALUES ('Java'),('MySQL'),('Python');- D" C. d3 J# }* M2 Z
Query OK, 3 rows affected (0.05 sec)  q; |$ T# }& v6 s: j1 W
Records: 3  Duplicates: 0  Warnings: 04 R1 [4 s- K5 ~; M* K* D2 p' ?3 ?" N

( w9 W6 ]! J! `mysql> SELECT * FROM tb_student_course;, Z7 T7 M! |% t2 O6 f  ?" @
+----+--------+. Y1 [9 _6 ?4 s! g/ ^. K# p  {( E
| id | name   |
  H( ?- w' F1 U% [6 k0 Y1 R+----+--------+! c4 y6 A2 f4 n) l9 p1 ~
|  1 | Java   |
# z0 W( S0 X% S) ]9 A|  2 | MySQL  |
2 d$ P8 P1 `$ Q: U# c|  3 | Python |' \* s& }) U* U+ W: b4 N, j  y
+----+--------+
5 M/ S- s8 r8 _/ E2 h3 rows in set (0.00 sec)
1 s. @8 g0 L, b! n+ O9 R: D复制代码
2 D0 g" q" I+ J, d8 _0 K使用 TRUNCATE 语句清空 tb_student_course 表中的记录,SQL 语句和运行结果如下:
) V, [( V, `# {/ I! q6 z( O" \. N* ^
mysql> TRUNCATE TABLE tb_student_course;5 d0 O1 A- T# ]+ A0 e
Query OK, 0 rows affected (0.04 sec)
  \+ M* ]! b" @; X/ f2 c1 ?/ |2 ]* m: n
mysql> SELECT * FROM tb_student_course;
( E2 Y: w7 H! Z4 }0 cEmpty set (0.00 sec)
5 l/ |7 ]  _( L6 Q; `6 Q复制代码
3 Q9 A8 S0 [) }7 j/ f& c$ VTRUNCATE 和 DELETE 的区别(再次强调)( K/ ~- `" t; v) S. F/ G* [, n; [
从逻辑上说,TRUNCATE 语句与 DELETE 语句作用相同,但是在某些情况下,两者在使用上有所区别。
8 r4 `" ^, P6 H& xDELETE 是 DML 类型的语句;TRUNCATE 是 DDL 类型的语句。它们都用来清空表中的数据。0 R) b3 _3 R$ [0 o" `
DELETE 是逐行一条一条删除记录的;TRUNCATE 则是直接删除原来的表,再重新创建一个一模一样的新表,而不是逐行删除表中的数据,执行数据比 DELETE 快。% G  p& W* U" e% [
  因此需要删除表中全部的数据行时,尽量使用 TRUNCATE 语句, 可以缩短执行时间。. u+ t) B+ a7 m( p
DELETE 删除数据后,配合事件回滚可以找回数据;TRUNCATE 不支持事务的回滚,数据删除后无法找回。
0 D7 W7 \: E; h0 P/ s; ~4 NDELETE 删除数据后,系统不会重新设置自增字段的计数器;TRUNCATE 清空表记录后,系统会重新设置自增字段的计数器。: k# O" o) B5 U# ~# g( ^; a
DELETE 的使用范围更广,因为它可以通过 WHERE 子句指定条件来删除部分数据;而 TRUNCATE 不支持 WHERE 子句,只能删除整体。; v- c  I6 i; _2 b& a) h7 S
DELETE 会返回删除数据的行数,但是 TRUNCATE 只会返回 0,没有任何意义。4 M; X. {6 W: Q8 F  W( E+ ]
复制代码
: I2 \  p6 N/ L6 `% C; G3.truncate使用场景及注意事项8 k% Z/ l& Y4 ]2 [$ ^" u2 W" \. O
  通过前面介绍,我们很容易得出truncate语句的使用场景,即该表数据完全不需要时可以用truncate。
0 j" \. S, Q5 f3 d, L% S7 L0 ?9 |/ e. v1 B
  如果想删除部分数据用delete,注意带上where子句;如果想删除表,当然用drop;如果想保留表而将所有数据删除且和事务无关,用truncate即可;
' S9 ^% O. I- |% W$ Y1 Y% v
) _& x" o4 z  K% b9 r, U  如果和事务有关,或者想触发trigger,还是用delete;如果是整理表内部的碎片,可以用truncate然后再重新插入数据。
: y- i; M8 S( k, w. a9 x, Y5 u+ s2 C) n, e6 u. \# y& U
无论怎样,truncate表都是高危操作,特别是在生产环境要更加小心,下面列出几点注意事项,希望大家使用时可以做下参考。* }2 L) K3 `% @. ]
. Y4 j: s; Y2 i! p- u7 H2 s3 F: F2 H: T
truncate无法通过binlog回滚。
( t% _% o3 u, s+ x% x1 F) atruncate会清空所有数据且执行速度很快。
7 Q* B; c/ O: K7 `1 |# p& Struncate不能对有外键约束引用的表使用。; G' Z; M: ~  }7 t) e% W
执行truncate需要drop权限,不建议给账号drop权限。0 ]  s4 p( s" b. K" Z( \" [
执行truncate前一定要再三检查确认,最好提前备份下表数据。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-11-23 14:05:07 | 显示全部楼层
MariaDB [(none)]> delete from keystone.token where user_id='14687393c47346beb4a6b95232e5d434';
# |& ?+ p6 F- F9 V3 P/ t5 G. p. T0 e0 ^2 R* h" q4 v) R6 T
^CCtrl-C -- query killed. Continuing normally.
6 N+ B+ P: M; ?: q
( @) J$ K3 \3 b* G# d' O^CCtrl-C -- query killed. Continuing normally.7 V% f9 E# F0 k. j5 U# }" ~- i
ERROR 2013 (HY000): Lost connection to MySQL server during query) o  T, Q; `9 n
MariaDB [(none)]> truncate table keystone.token;
! t! Z! Q) {& ?1 L# F6 yERROR 2006 (HY000): MySQL server has gone away
  P& g, i9 w7 W% Z, wNo connection. Trying to reconnect...
4 ^. k4 g5 u# F6 z( EConnection id:    338
! f% h1 j; ]" ^' @7 VCurrent database: *** NONE ***1 m3 C* q; q* t, p' K3 C7 C' W, E, Q
Query OK, 0 rows affected (1.21 sec)/ d$ d0 h, M2 D. p' X! z5 k% t5 b
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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