易陆发现互联网技术论坛

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

openstack 清理keystone token数据

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

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

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

x
登录数据库,执行命令:6 Z* E1 M$ m; B1 {* g
MariaDB [keystone]>  delete from keystone.token where user_id="14687393c47346beb4a6b95232e5d434";
, Q  @3 H5 K; u" RMariaDB [keystone]> delete from keystone.token where user_id='14687393c47346beb4a6b95232e5d434';8 a- d4 W% J% c
; Q4 c. d4 O. O6 v3 |
使用truncat 方式清楚数据库中的表数据:
; g( {- T6 F! oMariaDB [keystone]> truncate table token;+ y$ u9 ?0 t, p: G5 Y; R) O# |$ m9 u
 楼主| 发表于 2021-11-18 19:29:42 | 显示全部楼层
TRUNCATE 关键字用于完全清空一个表。其语法格式如下:: [, e/ o; d0 ^! A: @2 k' {9 e4 d
% e- R% y- F! a0 V& ]8 r4 |
TRUNCATE [TABLE] 表名
' R/ u; E/ z$ m0 u2 ^' G其中,TABLE 关键字可省略。& E; l1 _$ p4 J! q; n

  w0 k1 y0 Z8 L% v% Q" i; e例 1
, V2 X9 E8 a/ n- A" B) ]' W! \' D新建表 tb_student_course,插入数据并查询,SQL 语句和运行结果如下:0 v! r- Z/ [% }+ I  F, @

$ ?# ]% u3 c- T) S2 d1 W1 ?5 t复制代码2 w5 S& n! f# j# h+ a
mysql> CREATE TABLE `tb_student_course` (7 Z# _. Z' c% y8 f; u
    -> `id` int(4) NOT NULL AUTO_INCREMENT,$ t$ l# v1 G$ j) L( l3 `/ ]; E
    -> `name` varchar(25) NOT NULL,% }% z; }/ P  k6 b9 K
    -> PRIMARY KEY (`id`)+ t  Z* _$ Q) ?2 }
    -> );# }; p( A- {% Q  A* c
Query OK, 0 rows affected (0.04 sec)5 ~/ W/ |4 G8 _: \

0 ^, l* ^2 S- y  U) Y! n0 x) q- i% {! c$ Nmysql> INSERT INTO tb_student_course(name) VALUES ('Java'),('MySQL'),('Python');
! G0 q8 y6 p& q% LQuery OK, 3 rows affected (0.05 sec)$ D1 `' l1 R, r+ b: X
Records: 3  Duplicates: 0  Warnings: 06 Z, Q0 [4 \# v

0 |  q/ G& P3 pmysql> SELECT * FROM tb_student_course;. k' \6 p) u. N6 _8 w3 s  F: E; H
+----+--------+
2 W) _9 m" x& e! N7 l" ?: B! X| id | name   |1 B$ \  d/ K/ K& f
+----+--------+
' H+ B' P# K) b5 w|  1 | Java   |2 c! v4 c" b. q! g% o* v
|  2 | MySQL  |
# R# M& g( k! \5 k- _|  3 | Python |
# z6 K* J! R" h2 ?+----+--------+
: P; F; u( [- v# A8 ]# T. I3 rows in set (0.00 sec)3 X& u) t* X5 R% x
复制代码" a6 T: z) n& p( B4 i8 a
使用 TRUNCATE 语句清空 tb_student_course 表中的记录,SQL 语句和运行结果如下:7 T+ R) m' F( x' ~

6 _8 ~, \# h6 y$ ~4 Wmysql> TRUNCATE TABLE tb_student_course;) H2 L; W0 |. o% H: C) F, Z  e  b
Query OK, 0 rows affected (0.04 sec)
: M9 ?7 u9 q5 y  y% g2 F) v+ i
/ O/ \( |/ @9 V) C7 E9 r$ ~mysql> SELECT * FROM tb_student_course;, B) D% k- b" U) u; n
Empty set (0.00 sec): O' I! r& `' G+ k8 G" T0 Y5 S7 |
复制代码$ m- w$ X) c. b/ \; f5 {; n
TRUNCATE 和 DELETE 的区别(再次强调)- `, t: Q9 [( X- [/ T4 ]- I
从逻辑上说,TRUNCATE 语句与 DELETE 语句作用相同,但是在某些情况下,两者在使用上有所区别。
3 Z& M& T+ }2 wDELETE 是 DML 类型的语句;TRUNCATE 是 DDL 类型的语句。它们都用来清空表中的数据。
& {) i4 t6 J8 M1 d( k5 P  VDELETE 是逐行一条一条删除记录的;TRUNCATE 则是直接删除原来的表,再重新创建一个一模一样的新表,而不是逐行删除表中的数据,执行数据比 DELETE 快。
) F4 ]. v. G# W2 R3 P  因此需要删除表中全部的数据行时,尽量使用 TRUNCATE 语句, 可以缩短执行时间。
8 [' f  A5 {, c3 _( t# _3 B' u; LDELETE 删除数据后,配合事件回滚可以找回数据;TRUNCATE 不支持事务的回滚,数据删除后无法找回。
: V2 z+ E4 _/ ODELETE 删除数据后,系统不会重新设置自增字段的计数器;TRUNCATE 清空表记录后,系统会重新设置自增字段的计数器。/ C$ u1 R* O  S1 n  D% e
DELETE 的使用范围更广,因为它可以通过 WHERE 子句指定条件来删除部分数据;而 TRUNCATE 不支持 WHERE 子句,只能删除整体。5 _2 Z0 N- j. U0 I+ b
DELETE 会返回删除数据的行数,但是 TRUNCATE 只会返回 0,没有任何意义。
1 A0 o( c6 n( c, T( |' y: Q复制代码  W# ]0 _" Q/ ^) h
3.truncate使用场景及注意事项
; V0 L, N* {! r2 e+ h  通过前面介绍,我们很容易得出truncate语句的使用场景,即该表数据完全不需要时可以用truncate。
: c, F# n! g( z# }' e: v! t0 n% i0 |5 {& T7 D
  如果想删除部分数据用delete,注意带上where子句;如果想删除表,当然用drop;如果想保留表而将所有数据删除且和事务无关,用truncate即可;
& c- u* _, D% _4 r3 p6 P: V1 z0 V3 ~
  如果和事务有关,或者想触发trigger,还是用delete;如果是整理表内部的碎片,可以用truncate然后再重新插入数据。+ L! X7 i1 P& c1 b1 E
6 q/ I. d# _" f3 Z! }' h9 T
无论怎样,truncate表都是高危操作,特别是在生产环境要更加小心,下面列出几点注意事项,希望大家使用时可以做下参考。3 _: l8 `$ V1 ^# {

: j- C! K$ r3 S2 Z/ P3 ptruncate无法通过binlog回滚。4 U$ M3 b. p& q, l. d+ h/ R5 k
truncate会清空所有数据且执行速度很快。  k) Z; b( ?% u5 E3 G4 W
truncate不能对有外键约束引用的表使用。5 J: z2 ~2 e3 x7 w2 t
执行truncate需要drop权限,不建议给账号drop权限。
: o2 ?& w! l( p5 n执行truncate前一定要再三检查确认,最好提前备份下表数据。
 楼主| 发表于 2021-11-23 14:05:07 | 显示全部楼层
MariaDB [(none)]> delete from keystone.token where user_id='14687393c47346beb4a6b95232e5d434';
& p6 u+ A% t# @* s6 H/ x6 p( u8 q" Y" \$ o0 L! x9 N; U
^CCtrl-C -- query killed. Continuing normally.
0 x5 H' `) @" O
6 V& Z8 Q2 X! E! [^CCtrl-C -- query killed. Continuing normally.
0 \0 n/ b) q1 J) E, T9 UERROR 2013 (HY000): Lost connection to MySQL server during query7 V: A  }6 G: A8 T7 Q4 k& K( i6 _
MariaDB [(none)]> truncate table keystone.token;* b7 P1 e% n, b8 M; Z9 d0 o
ERROR 2006 (HY000): MySQL server has gone away
, P7 B. S3 {! G5 I8 G7 ~8 v9 \No connection. Trying to reconnect...
1 T9 @7 `' r9 M% v* OConnection id:    338* _  A0 M1 Q+ {' N( r
Current database: *** NONE ***
# Y: _* S- `0 z2 y2 DQuery OK, 0 rows affected (1.21 sec)
3 i$ K5 m% ?! ~2 ]
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 点击这里给我发消息

GMT+8, 2026-4-8 13:39 , Processed in 0.042368 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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