Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Błąd:Przestrzeń tabel dla tabeli xxx istnieje. Proszę ODRZUĆ obszar tabel przed IMPORTOWANIEM

Trochę późno, ale generalnie widziałem ten problem, gdy pojawia się błąd „obszar tabel pełny” podczas pracy w trybie „innodb_file_per_table”. Bez wchodzenia w zbyt wiele szczegółów (więcej tutaj ), obszar tabel serwera bazy danych jest zdefiniowany przez ustawienie innodb_data_file_path i domyślnie jest raczej mały. Nawet powiększony, „pełny obszar tabel” może nadal występować w przypadku większych zapytań itp. (Mnóstwo „rzeczy” nie związanych z tabelą jest tam przechowywanych, cofanie dzienników, pamięci podręczne itp.).

W każdym razie odkryłem, że jeśli zajrzysz do katalogu systemu operacyjnego, w którym przechowywane są pliki na tabelę, /var/lib/mysql domyślnie na OSX, /usr/local/var/mysql z homebrew iirc, znajdziesz osierocony plik nazwa_tabeli.ibd bez normalnego pliku towarzyszącego nazwa_tabeli.frm. Jeśli przeniesiesz ten plik .ibd do bezpiecznej lokalizacji tymczasowej (dla pewności), to powinno rozwiązać problem.

$ 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/

Jedno zastrzeżenie, upewnij się, że to, co pierwotnie powoduje problem, np. długotrwałe zapytanie, zablokowana tabela itp. zostały wyczyszczone. W przeciwnym razie przy drugiej próbie otrzymasz kolejny osierocony plik .ibd.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwracanie zestawu wyników

  2. mysql -> wstaw do tbl (wybierz z innej tabeli) i kilka wartości domyślnych

  3. Czy SQL Server oferuje coś podobnego do aktualizacji MySQL ON DUPLICATE KEY?

  4. Najlepsze praktyki mysqldump:Część 2 – Przewodnik po migracji

  5. Bezpieczne pliki do pobrania