易陆发现互联网技术论坛

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

openstack 清理keystone token数据

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

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

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

x
登录数据库,执行命令:& b- m/ `, m# B  o. f- c0 X0 w
MariaDB [keystone]>  delete from keystone.token where user_id="14687393c47346beb4a6b95232e5d434";
. G* A7 A* f$ t+ KMariaDB [keystone]> delete from keystone.token where user_id='14687393c47346beb4a6b95232e5d434';0 S; R" M; x0 {9 A( h7 v- O

7 w  {% `  l" f  C使用truncat 方式清楚数据库中的表数据:! W2 I1 E' z! A2 a9 r# D
MariaDB [keystone]> truncate table token;6 \. h+ x  V0 _
 楼主| 发表于 2021-11-18 19:29:42 | 显示全部楼层
TRUNCATE 关键字用于完全清空一个表。其语法格式如下:
) S9 p" |- C" w) o2 N5 ?# x; Q
6 p0 y9 Y- A$ p$ d/ l" f% ?( R5 }TRUNCATE [TABLE] 表名
. [& H6 k8 Z2 y# M其中,TABLE 关键字可省略。
! w0 r# u: G, E! y1 Z: U  ?
7 q" [9 L3 \, F8 D例 1! L! |, D+ |# f. _5 d
新建表 tb_student_course,插入数据并查询,SQL 语句和运行结果如下:
1 a4 G* ?' r& F. ?; g+ e
- C9 C) D8 `$ X0 ^7 T复制代码
" J& x" t2 U% l! e% o2 L5 |mysql> CREATE TABLE `tb_student_course` (
8 I5 T% c  F8 J( r/ i7 \8 I    -> `id` int(4) NOT NULL AUTO_INCREMENT,
/ J3 K$ f+ `, t' k8 t    -> `name` varchar(25) NOT NULL,
- y* I, ?* ^3 `1 G    -> PRIMARY KEY (`id`)" C. H7 ]1 m; q8 Q7 ^$ ~. m2 R
    -> );
0 G& W1 E/ w  K* aQuery OK, 0 rows affected (0.04 sec)! `! \- {+ r2 c+ ^7 v
3 U7 ]% M- W, T
mysql> INSERT INTO tb_student_course(name) VALUES ('Java'),('MySQL'),('Python');7 m- o8 n  d; D- l- N9 K+ E/ q
Query OK, 3 rows affected (0.05 sec)
8 K0 J  j: F* a0 lRecords: 3  Duplicates: 0  Warnings: 0$ l; y3 S& W8 C1 N6 Z
5 R; X" U0 o1 ?1 J8 t2 }# f/ m
mysql> SELECT * FROM tb_student_course;
! ]# S& x( ^; D, D6 W+----+--------+8 E7 ^) G" W; s6 }* ?
| id | name   |+ Y) l! M4 P) }2 ?1 A" O
+----+--------+$ j7 }" S8 i# [$ }; J$ Z
|  1 | Java   |1 ]9 Y3 R0 T) X
|  2 | MySQL  |
: s6 @5 i  q, a|  3 | Python |
4 A. K7 ]% ]; b: |8 H/ P9 ^+----+--------+
; u- d/ S$ d4 B( _3 ~3 rows in set (0.00 sec)
- }1 W% V% @2 l复制代码# k, @. V) W: D
使用 TRUNCATE 语句清空 tb_student_course 表中的记录,SQL 语句和运行结果如下:0 \0 p$ [5 @  ^# u
6 b- ?* n2 V$ {: A% I1 c
mysql> TRUNCATE TABLE tb_student_course;8 Y) J, a/ ^1 \$ ^. ~* K7 [
Query OK, 0 rows affected (0.04 sec)2 U  T9 R1 ]6 z

, A0 \$ _6 N9 ~3 Bmysql> SELECT * FROM tb_student_course;
+ F+ r7 m: B- M% {; XEmpty set (0.00 sec)
8 c% X8 k' s+ j0 ?复制代码, N! G. Y) [: m( v1 N
TRUNCATE 和 DELETE 的区别(再次强调)
% {0 B; e& L/ s  A9 G2 o$ J/ U0 ^从逻辑上说,TRUNCATE 语句与 DELETE 语句作用相同,但是在某些情况下,两者在使用上有所区别。  m- ~( H, X+ ~4 l) K2 U3 i
DELETE 是 DML 类型的语句;TRUNCATE 是 DDL 类型的语句。它们都用来清空表中的数据。* L6 ~$ [2 m! N3 c
DELETE 是逐行一条一条删除记录的;TRUNCATE 则是直接删除原来的表,再重新创建一个一模一样的新表,而不是逐行删除表中的数据,执行数据比 DELETE 快。
" O% o: |; Y8 e" |- Y  因此需要删除表中全部的数据行时,尽量使用 TRUNCATE 语句, 可以缩短执行时间。
( N+ q  `& {4 g2 `5 ^4 PDELETE 删除数据后,配合事件回滚可以找回数据;TRUNCATE 不支持事务的回滚,数据删除后无法找回。! z" }5 N9 p" p2 f! }, u
DELETE 删除数据后,系统不会重新设置自增字段的计数器;TRUNCATE 清空表记录后,系统会重新设置自增字段的计数器。
; j9 Q! i( U" |+ Z# B1 a' k+ hDELETE 的使用范围更广,因为它可以通过 WHERE 子句指定条件来删除部分数据;而 TRUNCATE 不支持 WHERE 子句,只能删除整体。
% e8 y( O# l% ~) qDELETE 会返回删除数据的行数,但是 TRUNCATE 只会返回 0,没有任何意义。
( H% b& \, A  n/ J. }+ m5 P8 P复制代码% ~! b/ o4 u' _0 j+ S: n
3.truncate使用场景及注意事项
0 n/ W. Q, Z9 _5 p7 X  通过前面介绍,我们很容易得出truncate语句的使用场景,即该表数据完全不需要时可以用truncate。
* l" k$ F. D  v7 F. ~
6 J5 }! b$ y& y0 D4 _  如果想删除部分数据用delete,注意带上where子句;如果想删除表,当然用drop;如果想保留表而将所有数据删除且和事务无关,用truncate即可;
2 [; e; X" @) R1 D" W
: X7 S+ s8 P( L( s8 ?0 {. e  如果和事务有关,或者想触发trigger,还是用delete;如果是整理表内部的碎片,可以用truncate然后再重新插入数据。
- V# v  A0 V# G$ P. y5 q3 A; u: ?4 Z; r6 X/ p. p2 t
无论怎样,truncate表都是高危操作,特别是在生产环境要更加小心,下面列出几点注意事项,希望大家使用时可以做下参考。7 z- @# M; P. M, G
6 y: u0 ?0 d; i
truncate无法通过binlog回滚。0 G% q8 Z! x$ C0 F1 o/ |# a" I/ }2 k
truncate会清空所有数据且执行速度很快。- V' h6 [# y3 _; t# [: g! k
truncate不能对有外键约束引用的表使用。, y! P3 l4 E% z% x/ i8 W* ^9 {* o
执行truncate需要drop权限,不建议给账号drop权限。
, {. a3 D7 w. H8 s执行truncate前一定要再三检查确认,最好提前备份下表数据。
 楼主| 发表于 2021-11-23 14:05:07 | 显示全部楼层
MariaDB [(none)]> delete from keystone.token where user_id='14687393c47346beb4a6b95232e5d434';' _. v  ]4 Q. W, @# V& Y2 p
) S- b$ ?" N1 l+ C
^CCtrl-C -- query killed. Continuing normally.
  K' t- D, T: k/ x# U" N8 ?5 P& ?% b# H2 Z" ]3 V6 k& x  m5 G
^CCtrl-C -- query killed. Continuing normally.
6 }; u7 q" g5 iERROR 2013 (HY000): Lost connection to MySQL server during query. S  }9 G1 t0 X* I5 u
MariaDB [(none)]> truncate table keystone.token;
' |& m0 x# L8 d+ i* LERROR 2006 (HY000): MySQL server has gone away( a: T% @& _  M* ]
No connection. Trying to reconnect...8 P& r6 [( y4 Z5 H- n6 h
Connection id:    338- B- b: s) F; l# C! B
Current database: *** NONE ***; S$ P( K4 ^! g) ^4 D  X
Query OK, 0 rows affected (1.21 sec)& [) }2 P: o5 N8 }5 n
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

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

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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