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

openstack 清理keystone token数据

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-11-18 18:53:19 | 显示全部楼层 |阅读模式
登录数据库,执行命令:! e: U# b' u+ w/ n! W3 W7 [
MariaDB [keystone]>  delete from keystone.token where user_id="14687393c47346beb4a6b95232e5d434";; }3 I7 x6 C+ t: M) [
MariaDB [keystone]> delete from keystone.token where user_id='14687393c47346beb4a6b95232e5d434';
7 }% F+ A4 f8 a$ {. E% g7 r9 P/ C2 m( N# h$ U( [
使用truncat 方式清楚数据库中的表数据:
1 q4 E; R0 R( T& V% EMariaDB [keystone]> truncate table token;
9 V5 H  H6 A& B3 D; V8 `) p

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-11-18 19:29:42 | 显示全部楼层
TRUNCATE 关键字用于完全清空一个表。其语法格式如下:
& M% S5 k+ R9 _% O5 P# t0 e
/ b3 V1 g" W; l- j8 iTRUNCATE [TABLE] 表名' f3 p! q& p0 @4 K) j0 l) j
其中,TABLE 关键字可省略。
0 v  b. q9 i5 T, V2 X- x( u0 ~2 u$ h! Z2 E: J) Q5 a
例 1
3 F+ J5 L1 L* M+ f: g0 n  L新建表 tb_student_course,插入数据并查询,SQL 语句和运行结果如下:
% Q6 S7 E4 T7 G, z% I* z
3 ]% X7 c9 \2 n$ Z) @复制代码
# Y2 L9 v  W6 lmysql> CREATE TABLE `tb_student_course` (- ^6 G& d2 a- L' H
    -> `id` int(4) NOT NULL AUTO_INCREMENT,! s0 `" f! X+ ]& W* }  x& @
    -> `name` varchar(25) NOT NULL,
/ ?2 j6 K/ b$ p' l6 r9 m& c    -> PRIMARY KEY (`id`)
: Z- H! V2 P' z  Z    -> );: q4 {5 [! Q7 k$ ~  J
Query OK, 0 rows affected (0.04 sec)2 t# t7 T- x& D4 j

8 C2 o1 _& l0 Q8 _& Qmysql> INSERT INTO tb_student_course(name) VALUES ('Java'),('MySQL'),('Python');
6 ?  K5 r. ~* b- RQuery OK, 3 rows affected (0.05 sec)$ x3 E0 |% n& ?% T+ k( S# \5 V
Records: 3  Duplicates: 0  Warnings: 0
( Z! ?4 |5 c4 N& @
2 r6 g3 A3 b6 k$ w3 Lmysql> SELECT * FROM tb_student_course;
# h! M7 Q. s: Z! D7 p) Q) l+----+--------+) M0 k! |/ V) v$ }- J
| id | name   |
( J4 h$ M( _8 ~1 w- T2 Y+----+--------+
- G# H/ A# P' Q: F' A|  1 | Java   |
+ r" H- o$ h# f1 `. \& Y6 U|  2 | MySQL  |% A5 l: \1 {5 s
|  3 | Python |
. A& m3 ~  i* e( q+----+--------+& O3 ~* N) m& d$ v9 M$ Y
3 rows in set (0.00 sec)
+ L* d0 z+ I# z" F/ a# R* O复制代码
. e  @5 B( T: |; }2 a使用 TRUNCATE 语句清空 tb_student_course 表中的记录,SQL 语句和运行结果如下:/ X4 q  a4 g- o: s

) a# F9 J1 q# }, _4 s& j0 y$ ?mysql> TRUNCATE TABLE tb_student_course;
2 I: X0 O! f/ z$ KQuery OK, 0 rows affected (0.04 sec)& P- G- ^& M" D* n2 N

1 y, H& {" ]2 |& {9 Z1 |1 umysql> SELECT * FROM tb_student_course;
, ?: _' w( v, ^3 PEmpty set (0.00 sec)- f5 a  h- ?! a: P' X2 T! K
复制代码0 A$ `4 o0 E1 U
TRUNCATE 和 DELETE 的区别(再次强调)
; A! \+ b$ H2 |8 @从逻辑上说,TRUNCATE 语句与 DELETE 语句作用相同,但是在某些情况下,两者在使用上有所区别。
/ A" b$ F1 N# a6 lDELETE 是 DML 类型的语句;TRUNCATE 是 DDL 类型的语句。它们都用来清空表中的数据。. U' [, j' E5 j5 F) e
DELETE 是逐行一条一条删除记录的;TRUNCATE 则是直接删除原来的表,再重新创建一个一模一样的新表,而不是逐行删除表中的数据,执行数据比 DELETE 快。
, `& |& ~! ?) a! S3 g  因此需要删除表中全部的数据行时,尽量使用 TRUNCATE 语句, 可以缩短执行时间。
2 I) F2 P! Q$ {+ O1 Q' sDELETE 删除数据后,配合事件回滚可以找回数据;TRUNCATE 不支持事务的回滚,数据删除后无法找回。0 w% ?* @  H9 I# t) F
DELETE 删除数据后,系统不会重新设置自增字段的计数器;TRUNCATE 清空表记录后,系统会重新设置自增字段的计数器。
% {* O( d: j  o7 B4 N" ADELETE 的使用范围更广,因为它可以通过 WHERE 子句指定条件来删除部分数据;而 TRUNCATE 不支持 WHERE 子句,只能删除整体。* z2 T6 \, U* o: N
DELETE 会返回删除数据的行数,但是 TRUNCATE 只会返回 0,没有任何意义。
) c1 b6 U  C. ^复制代码
6 I5 F* Z) ^$ b( Z3.truncate使用场景及注意事项
; w9 Z+ F8 _9 x/ y1 F  通过前面介绍,我们很容易得出truncate语句的使用场景,即该表数据完全不需要时可以用truncate。
6 G9 W, |! K/ l2 E2 z1 b+ e
! x3 ?2 W" ]( r8 {; W3 `8 O  如果想删除部分数据用delete,注意带上where子句;如果想删除表,当然用drop;如果想保留表而将所有数据删除且和事务无关,用truncate即可;
$ `; U0 y  ?# `+ \
; H7 }1 }4 E% c: J1 b  g  如果和事务有关,或者想触发trigger,还是用delete;如果是整理表内部的碎片,可以用truncate然后再重新插入数据。+ j0 Q5 y9 p- ?, a& L  e
9 v  }" Z& O+ f' Y
无论怎样,truncate表都是高危操作,特别是在生产环境要更加小心,下面列出几点注意事项,希望大家使用时可以做下参考。
9 `; F- h1 l$ s; i- x2 K# G/ @: F5 ~, `
truncate无法通过binlog回滚。  a3 V+ {5 Q: x- O
truncate会清空所有数据且执行速度很快。& }1 A2 A" N4 c' d
truncate不能对有外键约束引用的表使用。
6 j/ p8 R# ]5 V, u3 Q执行truncate需要drop权限,不建议给账号drop权限。" U) M7 j. @( O! f" l( g. p9 P
执行truncate前一定要再三检查确认,最好提前备份下表数据。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-11-23 14:05:07 | 显示全部楼层
MariaDB [(none)]> delete from keystone.token where user_id='14687393c47346beb4a6b95232e5d434';$ \  R# m) r. G8 M' L  _
$ G4 e6 I" U- O: N7 V# d: |' x+ [
^CCtrl-C -- query killed. Continuing normally.: R* I1 D) f3 t% Y

1 Z4 z4 o& F- {^CCtrl-C -- query killed. Continuing normally.
! \; z1 _6 e7 _7 o9 C" S+ b0 k+ f; rERROR 2013 (HY000): Lost connection to MySQL server during query9 a+ M; ^/ i: r" s- U: G/ Y# t9 ]
MariaDB [(none)]> truncate table keystone.token;
* ]* @/ b9 U7 |$ f0 IERROR 2006 (HY000): MySQL server has gone away2 X3 q( g9 J7 i! P9 J
No connection. Trying to reconnect...* r# L- r+ {5 k0 M8 Y8 \# L
Connection id:    338
/ ]6 t, d: N; L' z& s0 a- W5 BCurrent database: *** NONE ***
5 C( n1 L% _  k" _$ Y: JQuery OK, 0 rows affected (1.21 sec)
( m$ W% ~2 A' Q6 O* ?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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