DROP [UNDO] TABLESPACE tablespace_name
此语句用于删除先前使用 CREATE TABLESPACE
创建的表空间。它受 NDB
和 InnoDB
存储引擎支持。
必须指定 UNDO
关键字才能删除撤消表空间。只有使用 CREATE UNDO TABLESPACE
语法创建的撤消表空间才能删除。撤消表空间必须处于 空
状态才能删除。有关更多信息,请参阅第 17.6.3.4 节“撤消表空间”。
在 MySQL 中是区分大小写的标识符。tablespace_name
对于 InnoDB
通用表空间,在执行 DROP TABLESPACE
操作之前,必须先从表空间中删除所有表。如果表空间不为空,则 DROP TABLESPACE
将返回错误。
要删除的 NDB
表空间不得包含任何数据文件;换句话说,在删除 NDB
表空间之前,必须先使用 ALTER TABLESPACE ... DROP DATAFILE
删除其每个数据文件。
注意
当通用表空间中的最后一个表被删除时,该表空间不会被自动删除。必须使用
DROP TABLESPACE
显式删除表空间。tablespace_name
DROP DATABASE
操作可以删除属于通用表空间的表,但不能删除表空间,即使该操作删除了属于该表空间的所有表。必须使用DROP TABLESPACE
显式删除表空间。tablespace_name
与系统表空间类似,截断或删除存储在通用表空间中的表会在通用表空间 .ibd 数据文件 内部创建可用空间,该空间只能用于新的
InnoDB
数据。与每个表一个文件表空间不同,空间不会释放回操作系统。
InnoDB 示例
此示例演示如何删除 InnoDB
通用表空间。通用表空间 ts1
是使用单个表创建的。在删除表空间之前,必须先删除该表。
mysql> CREATE TABLESPACE `ts1` ADD DATAFILE 'ts1.ibd' Engine=InnoDB;
mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY) TABLESPACE ts1 Engine=InnoDB;
mysql> DROP TABLE t1;
mysql> DROP TABLESPACE ts1;
此示例演示如何删除撤消表空间。撤消表空间必须处于 empty
状态才能被删除。有关更多信息,请参阅 第 17.6.3.4 节 “撤消表空间”。
mysql> DROP UNDO TABLESPACE undo_003;
NDB 示例
此示例显示如何在先创建表空间后删除具有名为 mydata-1.dat
的数据文件的 NDB
表空间 myts
,并假定存在名为 mylg
的日志文件组(请参阅 第 15.1.16 节 “CREATE LOGFILE GROUP 语句”)。
mysql> CREATE TABLESPACE myts
-> ADD DATAFILE 'mydata-1.dat'
-> USE LOGFILE GROUP mylg
-> ENGINE=NDB;
在删除表空间之前,必须使用 ALTER TABLESPACE
删除表空间中的所有数据文件,如下所示
mysql> ALTER TABLESPACE myts
-> DROP DATAFILE 'mydata-1.dat';
mysql> DROP TABLESPACE myts;