錯誤:表的表空間存在。請在匯入之前丟棄表空間
問題:
MySQL 使用者在嘗試建立先前存在的表時遇到錯誤。該錯誤訊息表示該表的表空間已經存在,並且應該在匯入之前丟棄它。但是,當嘗試刪除表或放棄表空間時,錯誤訊息會指出該表不存在。是什麼原因導致此問題?
答案:
在「innodb_file_per_table」模式下運作並遇到「表空間已滿」錯誤時,通常會發生此錯誤。資料庫伺服器的表空間由 innodb_data_file_path 設定定義,預設情況下可以對其進行限制。
在這種情況下,作業系統目錄中可能存在孤立的.ibd 文件,而沒有其配套的.frm 文件,其中文件-每個表都存儲(通常是/var/lib/mysql或/usr/local/var/mysql)。
解決方案:
解決問題:
範例:
$ ls /var/lib/mysql table1.frm table1.idb table2.frm table2.idb table3.idb <-- problem table, no table3.frm table4.frm table4.idb $ mkdir /tmp/mysql_orphans $ mv /var/lib/mysql/table3.ibd /tmp/mysql_orphans/
注意: 確保任何根本原因,例如長時間運行的查詢或鎖定的表,已解決,以防止進一步孤立的.ibd 檔案已建立。
以上是MySQL 匯入錯誤:表空間存在但表不存在?的詳細內容。更多資訊請關注PHP中文網其他相關文章!