15.1.33 删除表空间语句
DROP [UNDO] TABLESPACE tablespace_name
使用CREATE TABLESPACE
创建的表空间可以使用该语句删除。它支持NDB
和InnoDB
存储引擎。
要删除undo表空间,必须指定UNDO
关键字。只能删除使用CREATE UNDO TABLESPACE
语法创建的undo表空间。undo表空间必须处于empty
状态才能被删除。更多信息,请参见第17.6.3.4节,“Undo 表空间”.
是MySQL的大小写敏感标识符。tablespace_name
对于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;