Това е стар въпрос, но току-що го получих днес и намерих решение (и да с errno =-1).
Нашата таблица е InnoDB и се създава и унищожава на всеки няколко часа. Наскоро стартирахме подчинен сървър, който да следва този главен. Използваме също опцията „innodb_file_per_table“.
Грешката ще възникне само на подчинено устройство, не и на главно устройство. Проблемът беше, че наскоро синхронизирахме това подчинено устройство към главното устройство с помощта на rsync преди няколко часа.
Rsync копира файла с таблицата, но междувременно беше изтрит от главния, тъй като беше временна таблица. Следователно .idb файлът съществуваше в подчинения, но вече не в главния.
Когато главният изпрати заявка за създаване на таблицата, подчиненият не можа, тъй като файлът вече беше там. MySQL не знаеше, че съществува таблица, тъй като метаданните казаха, че няма таблица. Предполагам, че MySQL се опитва да създаде файла, но тъй като беше там, не успя.
В моя случай решението беше да изтрия .idb файла в друга папка (разбира се първо с резервно копие).
След това базата данни ще ни позволи да създадем таблицата и след това подчиненото устройство ще следва отново главната
По-добър начин да направите този rsync би бил да използвате опцията --delete за премахване на всички остарели файлове, които са изчезнали от главния.
Както и да е - може да нямате точно тази ситуация като това, което описах, но може просто да е остарял файл, който е останал там по една или друга причина.