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

BŁĄD 1005 (HY000):Nie można utworzyć tabeli x (errno:-1)

To jest stare pytanie, ale właśnie dostałem to dzisiaj i znalazłem rozwiązanie (i tak, z errno =-1).

Nasza tabela to InnoDB i była tworzona i niszczona co kilka godzin. Niedawno uruchomiliśmy serwer podrzędny, który podąża za tym wzorcem. Używamy również opcji „innodb_file_per_table”.

Błąd wystąpiłby tylko na urządzeniu podrzędnym, a nie na urządzeniu nadrzędnym. Problem polegał na tym, że kilka godzin wcześniej zsynchronizowaliśmy to urządzenie podrzędne z urządzeniem nadrzędnym za pomocą rsync.

Rsync skopiował plik tabeli, ale w międzyczasie został usunięty przez mastera, ponieważ była to tabela tymczasowa. Plik .idb istniał więc w slave, ale już nie w master.

Kiedy master wysłał żądanie utworzenia tabeli, slave nie mógł, ponieważ plik już tam był. MySQL nie wiedział, że istnieje tabela, ponieważ metadane mówiły, że nie ma tabeli. Zakładam, że MySQL próbował utworzyć plik, ale ponieważ tam był, nie powiodło się.

W moim przypadku rozwiązaniem było usunięcie pliku .idb w innym folderze (oczywiście najpierw z kopią zapasową).

Następnie baza danych pozwoliłaby nam utworzyć tabelę, a urządzenie podrzędne ponownie podążyłoby za wzorcem

Lepszym sposobem na zrobienie tego rsync byłoby użycie opcji --delete w celu usunięcia wszelkich przestarzałych plików, które zniknęły z mastera.

W każdym razie - możesz nie mieć dokładnie takiej sytuacji, jak ta, którą opisałem, ale może to być po prostu przestarzały plik, który został tam z jakiegoś powodu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GROUP BY znacznik czasu co 15 minut, w tym brakujące wpisy

  2. Zwróć NULL, jeśli Count(*) wynosi zero

  3. Jak przechowywać dane twittera oauth w bazie mysql?

  4. Jak odświeżyć listę rozwijaną bez odświeżania strony?

  5. MySQL zgłasza błąd składni podczas określania kolumn