2014-11-17 30 views
5

Mam dziwny problem z MySQL, nie mogę utworzyć tabeli. Tabela, która istniała, jest częścią zadania ładowanego codziennie do tabeli pomostowej, a następnie obcina ją na końcu. Po miesiącach, tabela zniknął (może ktoś go upuścił, nie ma znaczenia) i udałem się go odbudować, ale pojawia się ten błąd:MySQL: Nie można utworzyć tabeli: errno -1

Level Code Message 
Error 1005 Can't create table 'apps.raw_appsites_stage' (errno: -1) 

nie mogę usunąć tabelę lub go odbudować. Ale jeśli w ogóle zmieniam nazwę tabeli, mogę ją zbudować.
Wygląda na to, że stół został upuszczony, ale przestrzeń nazw jest nadal zarezerwowana lub utknęła w stanie zawieszenia na zapleczu.

Oto ddl, że nie działa:

create table raw_appsites_stage(t int); 

Ale to ddl działa:

create table raw_appsites_stage_1(t int); 

Używam wystąpienie RDS więc nie mam dużo dostęp do sam serwer. Oto info wersja:

Variable_name Value 
innodb_version 5.5.40 
protocol_version 10 
slave_type_conversions 
version 5.5.40-log 
version_comment Source distribution 
version_compile_machine x86_64 
version_compile_os Linux 

Jak można zobaczyć, gdzie nazwa ta odbywa się na i dlaczego nie pozwolisz mi spaść lub utworzyć tabelę o tej nazwie?

UPDATE Próbowałem Zmień nazwę tej tabeli i ma nowego błędu nigdy nie widział:

Can't find file: './apps/raw_appsites_stage.frm' (errno: 2) 

więc na pewno coś Funky na back-end, ale ta istota i RDS instancja Nie mam dostępu do systemu operacyjnego komputera. Ktoś wie o poprawce? Czy muszę czekać na obsługę AWS?

Dzięki

+1

Użyj 'create table if not exist raw_appsites_stage (t int);' –

+0

@juergend: Otrzymuję dokładnie ten sam błąd z uruchomieniem tego polecenia. Problem nie polega na tym, że próbuję stworzyć, że już istnieje. Problem polega na tym, że nazwa-tabeli jest w stanie zawieszenia, MySQL mówi, że tabela nie istnieje z tą nazwą, ale także nie pozwala mi utworzyć nowej tabeli o tej nazwie. –

+0

co się stanie, jeśli wybierzesz * from raw_appsites_stage? Powinieneś wypróbować drop table jeśli istnieje raw_appsites_stage –

Odpowiedz

3

Ok, jeśli używasz InnoDB jako silnik. W jakiś sposób utraciłeś pliki raw_appsites_stage.frm i raw_appsites_stage.ibd. Słownik danych wciąż ma wpis dla tej tabeli.

Teraz nie można upuścić tabeli, ponieważ mysqld będzie szukał najpierw pliku .frm.

można albo spróbować check i repair table raw_appsites_stage (jeśli nie InnoDB)

lub backup ibdata1 przez mysqldump następnie usunąć ibdata1 i przywracania. Szczegóły: Here

+3

dzięki, dobra informacja. Niestety (?) Używam Innodb, więc nie mogę użyć "tabeli napraw" i "sprawdź tabelę raw_appsites_stage;" zwrócony "BŁĄD: tabela" apps.raw_appsites_stage "nie istnieje", a ponieważ jest to RDS, nie mogę uzyskać dostępu do systemu plików w sposób opisany w tym bardzo szczegółowym linku, który opublikowałeś. –

Powiązane problemy