DROP [UNDO] TABLESPACE tablespace_name
此陳述式會刪除先前使用 CREATE TABLESPACE
建立的資料表空間。它受到 NDB
和 InnoDB
儲存引擎的支援。
必須指定 UNDO
關鍵字才能刪除復原資料表空間。只有使用 CREATE UNDO TABLESPACE
語法建立的復原資料表空間才能被刪除。復原資料表空間在被刪除前必須處於 empty
(空的) 狀態。如需詳細資訊,請參閱 第 17.6.3.4 節,「復原資料表空間」。
是 MySQL 中區分大小寫的識別符號。tablespace_name
對於 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;
此範例示範如何刪除復原資料表空間。復原資料表空間在被刪除前必須處於 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;