文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  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 删除其每个数据文件。

注意

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