Ini adalah pertanyaan lama, tetapi saya baru mendapatkannya hari ini, dan menemukan solusinya (dan ya dengan errno =-1).
Tabel kami adalah InnoDB dan dibuat dan dihancurkan setiap beberapa jam. Kami baru saja memulai server budak untuk mengikuti master itu. Kami juga menggunakan opsi "innodb_file_per_table".
Kesalahan hanya akan terjadi pada slave, bukan pada master. Masalahnya adalah kami baru-baru ini menyinkronkan slave tersebut ke master menggunakan rsync beberapa jam sebelumnya.
Rsync menyalin file tabel, tetapi kemudian dihapus oleh master sementara itu, karena itu adalah tabel sementara. Oleh karena itu, file .idb ada di slave, tetapi tidak lagi di master.
Ketika master mengirim permintaan untuk membuat tabel, budak tidak bisa karena file sudah ada di sana. MySQL tidak menyadari bahwa ada tabel karena metadata mengatakan tidak ada tabel di sana. Saya berasumsi MySQL mencoba membuat file, tetapi karena ada di sana, file tersebut gagal.
Dalam kasus saya, solusinya adalah menghapus file .idb di folder lain (tentu saja dengan salinan cadangan terlebih dahulu).
Setelah itu, database akan mengizinkan kita untuk membuat tabel, dan slave kemudian akan mengikuti master lagi
Cara yang lebih baik untuk melakukan rsync adalah dengan menggunakan opsi --delete untuk menghapus file basi yang hilang dari master.
Bagaimanapun - Anda mungkin tidak memiliki situasi yang persis seperti yang saya jelaskan, tetapi itu bisa saja file basi yang ditinggalkan di sana karena suatu alasan atau lainnya.