首頁 >資料庫 >mysql教程 >MySQL 匯入錯誤:表空間存在但表不存在?

MySQL 匯入錯誤:表空間存在但表不存在?

Barbara Streisand
Barbara Streisand原創
2024-12-01 13:07:10966瀏覽

MySQL Import Error: Tablespace Exists But Table Doesn't?

錯誤:表的表空間存在。請在匯入之前丟棄表空間

問題:

MySQL 使用者在嘗試建立先前存在的表時遇到錯誤。該錯誤訊息表示該表的表空間已經存在,並且應該在匯入之前丟棄它。但是,當嘗試刪除表或放棄表空間時,錯誤訊息會指出該表不存在。是什麼原因導致此問題?

答案:

在「innodb_file_per_table」模式下運作並遇到「表空間已滿」錯誤時,通常會發生此錯誤。資料庫伺服器的表空間由 innodb_data_file_path 設定定義,預設情況下可以對其進行限制。

在這種情況下,作業系統目錄中可能存在孤立的.ibd 文件,而沒有其配套的.frm 文件,其中文件-每個表都存儲(通常是/var/lib/mysql或/usr/local/var/mysql)。

解決方案:

解決問題:

  1. 找到孤立的 .ibd 檔案在 files-per-table 儲存的目錄中。
  2. 將 .ibd 檔案移到安全的地方暫存位置(例如 /tmp/mysql_orphans)。

範例:

$ 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn