Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  DROP TABLESPACE Statement

15.1.33 删除表空间语句

DROP [UNDO] TABLESPACE tablespace_name

使用CREATE TABLESPACE创建的表空间可以使用该语句删除。它支持NDBInnoDB存储引擎。

要删除undo表空间,必须指定UNDO关键字。只能删除使用CREATE UNDO TABLESPACE语法创建的undo表空间。undo表空间必须处于empty状态才能被删除。更多信息,请参见第17.6.3.4节,“Undo 表空间”.

tablespace_name是MySQL的大小写敏感标识符。

对于InnoDB通用表空间,所有表必须在删除表空间之前从表空间中删除。否则,DROP TABLESPACE语句返回错误。

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

  • 一般的 InnoDB 表空间不会自动删除最后一个表时被删除。必须使用DROP TABLESPACE tablespace_name来显式地删除表空间。

  • DROP DATABASE 操作可以删除属于一般表空间的表,但不能删除表空间,即使操作删除了该表空间中的所有表。必须使用DROP TABLESPACE tablespace_name来显式地删除表空间。

  • 类似于系统表空间, truncating 或 删除一般表空间中的表创建了内部的自由空间.ibd 数据文件,只能用于新建 InnoDB 数据。空间不会被释放回操作系统,因为它是文件-per-表表空间。

这个示例演示了如何删除 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;

这个示例演示了删除 undo 表空间。undo 表空间在被删除前必须处于 empty 状态。更多信息,请参见第17.6.3.4节,“Undo Tablespaces”

mysql> DROP UNDO TABLESPACE undo_003;

这个示例展示了如何删除一个 NDB 表空间 myts,该表空间拥有名为 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;