易陆发现互联网技术论坛

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

openstack 清理keystone token数据

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

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

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

x
登录数据库,执行命令:
" b2 F1 A  Q8 a, KMariaDB [keystone]>  delete from keystone.token where user_id="14687393c47346beb4a6b95232e5d434";
0 _+ x7 i# i4 o/ w7 ~6 S. fMariaDB [keystone]> delete from keystone.token where user_id='14687393c47346beb4a6b95232e5d434';, c+ q; ]; P0 A8 E( S
  j0 k2 G* d! Q5 x
使用truncat 方式清楚数据库中的表数据:
3 M! I8 Y/ ]1 @  J6 dMariaDB [keystone]> truncate table token;
$ @- ?) l$ ]7 U$ y" t* m; I9 ]
 楼主| 发表于 2021-11-18 19:29:42 | 显示全部楼层
TRUNCATE 关键字用于完全清空一个表。其语法格式如下:/ D- g! {6 e! d( d4 l) I
! @, B" Z8 B2 S+ m5 v8 P- Y
TRUNCATE [TABLE] 表名) A& q& M7 @' I) h+ i
其中,TABLE 关键字可省略。
0 Q( C/ o; c  p
4 t, T8 ~' M5 D0 }6 O8 a例 1
$ u& }, ^! v' U, e, P) s% F) i% h" h* D新建表 tb_student_course,插入数据并查询,SQL 语句和运行结果如下:, v. V9 P# A1 Z" N& K4 W. `3 c1 U
  t8 u6 d1 h! Z9 N1 l
复制代码
# v/ g4 c' M" Y5 I, smysql> CREATE TABLE `tb_student_course` (2 p% Q0 Y' e" y, J5 ]
    -> `id` int(4) NOT NULL AUTO_INCREMENT,1 `) r4 z# x" `# U( Q1 E  F
    -> `name` varchar(25) NOT NULL,
2 D  Z  x! v9 Q5 G# ^: S3 Q    -> PRIMARY KEY (`id`)
2 n0 w0 [# F6 I! d3 l* r  H# Y    -> );
4 R  Y9 W& H8 a' @8 p# JQuery OK, 0 rows affected (0.04 sec)
# r! t# u/ h+ X: |% {  S8 b+ A( c% \" o+ t2 K/ w
mysql> INSERT INTO tb_student_course(name) VALUES ('Java'),('MySQL'),('Python');
+ }! x1 v3 O3 A" LQuery OK, 3 rows affected (0.05 sec)2 Z' s/ F: o3 }& L& N
Records: 3  Duplicates: 0  Warnings: 07 @: D7 N! y: M/ I: R
; Q5 x0 d9 O( V1 Q% }- c# y' }
mysql> SELECT * FROM tb_student_course;
$ u! R! z+ W% E+----+--------+  A. k/ ^- |2 A' W$ M
| id | name   |
. [. {8 I! {6 W" d6 j+----+--------+
' r/ f: V9 ^- r; u|  1 | Java   |
! e/ O9 Y; d" [0 E' q2 D" F|  2 | MySQL  |) ]6 f( b3 k) h  W3 g) X: c
|  3 | Python |
' y: |8 c* Q, P; g0 v& Q9 [+----+--------+
" c$ k, [+ a8 B3 rows in set (0.00 sec)- O( L9 i; Z; W/ K9 ]) C
复制代码
2 D( H$ O) c# {; o使用 TRUNCATE 语句清空 tb_student_course 表中的记录,SQL 语句和运行结果如下:& d% M$ P: u. h$ o- t
/ i  T  k4 ~9 y9 P
mysql> TRUNCATE TABLE tb_student_course;
8 {; J( w- b7 ?5 d: BQuery OK, 0 rows affected (0.04 sec)' Y9 J! ?* {" l7 C  j& L. I
% j! v" J! w# J1 h" s; C  y4 E
mysql> SELECT * FROM tb_student_course;
% t1 h4 Y( {& Y8 z5 o# n; k+ d4 LEmpty set (0.00 sec)) V  Y8 ]3 V# v) G) X" ?
复制代码
, G0 c8 v1 e. L* K. ^TRUNCATE 和 DELETE 的区别(再次强调)
4 A% ~7 m4 _4 \' R: B# f5 F从逻辑上说,TRUNCATE 语句与 DELETE 语句作用相同,但是在某些情况下,两者在使用上有所区别。3 h( X3 B0 X3 T# o, S: s+ v. Y
DELETE 是 DML 类型的语句;TRUNCATE 是 DDL 类型的语句。它们都用来清空表中的数据。* V/ ~5 L/ G' v3 f; m. _
DELETE 是逐行一条一条删除记录的;TRUNCATE 则是直接删除原来的表,再重新创建一个一模一样的新表,而不是逐行删除表中的数据,执行数据比 DELETE 快。3 Z  c# o+ p* b1 m# C2 j
  因此需要删除表中全部的数据行时,尽量使用 TRUNCATE 语句, 可以缩短执行时间。
# @. r/ C- Q) w1 ~$ t5 S' p0 E1 qDELETE 删除数据后,配合事件回滚可以找回数据;TRUNCATE 不支持事务的回滚,数据删除后无法找回。8 s# C. h0 s, u+ y
DELETE 删除数据后,系统不会重新设置自增字段的计数器;TRUNCATE 清空表记录后,系统会重新设置自增字段的计数器。8 }: ^, F% d3 P- I0 V& X
DELETE 的使用范围更广,因为它可以通过 WHERE 子句指定条件来删除部分数据;而 TRUNCATE 不支持 WHERE 子句,只能删除整体。
% r$ E: M$ p; B8 o/ V! L: c1 ^DELETE 会返回删除数据的行数,但是 TRUNCATE 只会返回 0,没有任何意义。- S2 M6 b. P* l$ g  z1 Z' {
复制代码
1 \' k8 g: m' C/ Q: [3.truncate使用场景及注意事项5 o! ^% i+ J6 ?. g. s6 I+ l6 z- _
  通过前面介绍,我们很容易得出truncate语句的使用场景,即该表数据完全不需要时可以用truncate。! Q+ G! a9 `- S
' p: \4 r3 f/ A
  如果想删除部分数据用delete,注意带上where子句;如果想删除表,当然用drop;如果想保留表而将所有数据删除且和事务无关,用truncate即可;+ r0 Y4 q# h, G" B

# l  _# o2 S9 U5 V4 J  如果和事务有关,或者想触发trigger,还是用delete;如果是整理表内部的碎片,可以用truncate然后再重新插入数据。. W! M* _  z6 o# Z% j6 H( U

4 }/ U" V7 x& A5 j  F1 z* y无论怎样,truncate表都是高危操作,特别是在生产环境要更加小心,下面列出几点注意事项,希望大家使用时可以做下参考。
4 c6 `9 E7 e0 `2 r! @6 v5 L% ~8 v/ x0 d1 l% b$ r$ f% X, O. L4 D1 U
truncate无法通过binlog回滚。
( \8 w6 N3 ~9 u( F5 D$ etruncate会清空所有数据且执行速度很快。
6 }4 v+ S3 S: ?; Struncate不能对有外键约束引用的表使用。7 |/ C; C" B1 [9 P
执行truncate需要drop权限,不建议给账号drop权限。
! r( Y* Y( W7 L执行truncate前一定要再三检查确认,最好提前备份下表数据。
 楼主| 发表于 2021-11-23 14:05:07 | 显示全部楼层
MariaDB [(none)]> delete from keystone.token where user_id='14687393c47346beb4a6b95232e5d434';
  q3 ~( P7 y" X4 a, R, l! J
8 X! C8 c6 W. X, M$ H^CCtrl-C -- query killed. Continuing normally.+ R) Z9 x/ J6 ?% s$ H- F0 z
2 G, E: g# Z9 ^1 m3 k7 M
^CCtrl-C -- query killed. Continuing normally.4 k5 |2 m  }4 M$ q0 n% O) j
ERROR 2013 (HY000): Lost connection to MySQL server during query
/ k. C" u3 r9 J1 tMariaDB [(none)]> truncate table keystone.token;
: [0 u8 `/ o  `& X2 W& sERROR 2006 (HY000): MySQL server has gone away
9 j2 o- Y5 E4 k! h- UNo connection. Trying to reconnect...
) Y& O! e9 x; {* qConnection id:    338
# |7 w% a/ s) y3 }8 wCurrent database: *** NONE ***! \# V& c; Z. G# s+ b. o9 e
Query OK, 0 rows affected (1.21 sec)2 e0 r8 V: z: i  g4 y% J
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

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

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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