文档主页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  DROP TABLESPACE 语句

15.1.33 DROP TABLESPACE 语句

DROP [UNDO] TABLESPACE tablespace_name

此语句用于删除之前使用 CREATE TABLESPACE 语句创建的表空间。它受 NDBInnoDB 存储引擎支持。

必须指定 UNDO 关键字才能删除撤消表空间。只有使用 CREATE UNDO TABLESPACE 语法创建的撤消表空间才能删除。撤消表空间必须处于 状态才能删除。有关更多信息,请参阅 第 17.6.3.4 节,“撤消表空间”

tablespace_name 在 MySQL 中是区分大小写的标识符。

对于 InnoDB 通用表空间,在执行 DROP TABLESPACE 操作之前,必须先从表空间中删除所有表。如果表空间不为空,则 DROP TABLESPACE 将返回错误。

要删除的 NDB 表空间不能包含任何数据文件;换句话说,在删除 NDB 表空间之前,必须先使用 ALTER TABLESPACE ... DROP DATAFILE 语句删除其每个数据文件。

注意

  • 当常规 InnoDB 表空间中的最后一个表被删除时,该表空间不会自动删除。必须使用 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;

此示例演示如何删除撤消表空间。撤消表空间必须处于 状态才能删除。有关更多信息,请参阅 第 17.6.3.4 节“撤消表空间”

mysql> DROP UNDO TABLESPACE undo_003;

NDB 示例

此示例演示如何在创建名为 mytsNDB 表空间(其数据文件名为 mydata-1.dat)后将其删除,并假设存在一个名为 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;