Saya memiliki InnoDB MySQL yang memiliki semua file tabel database, tetapi MySQL tidak melihatnya, dan tidak memuatnya.
Masalahnya terjadi karena saya dihapus tiga file: ibdata1
, ib_logfile0
danib_logfile1
karena saya mengalami masalah dengan mysql memulai, dan apa yang saya baca adalah menghapusnya karena MySQL hanya akan memperbaruinya (saya tahu saya harus membuat cadangan tetapi tidak melakukannya).
Apa yang bisa saya lakukan untuk membuat MySQL melihat tabel lagi?
about_member.frm site_stories.frm
about_member.ibd site_stories.ibd
db.opt stories.frm
FTS_00000000000000bb_BEING_DELETED_CACHE.ibd stories.ibd
FTS_00000000000000bb_BEING_DELETED.ibd story_comments.frm
FTS_00000000000000bb_CONFIG.ibd story_comments.ibd
FTS_00000000000000bb_DELETED_CACHE.ibd story_likes.frm
FTS_00000000000000bb_DELETED.ibd story_likes.ibd
FTS_00000000000000f5_BEING_DELETED_CACHE.ibd story_tags.frm
FTS_00000000000000f5_BEING_DELETED.ibd story_tags.ibd
FTS_00000000000000f5_CONFIG.ibd story_views.frm
FTS_00000000000000f5_DELETED_CACHE.ibd story_views.ibd
FTS_00000000000000f5_DELETED.ibd story_view_totals.frm
member_favorites.frm story_view_totals.ibd
member_favorites.ibd tags.frm
members.frm tags.ibd
members.ibd
Jawaban:
Inilah mengapa MySQL tidak dapat melihat file-file itu: tablespace sistem (ibdata1) memiliki kamus data spesifik Storage-Engine yang memungkinkan InnoDB memetakan potensi penggunaan tabel:
Memindahkan tabel InnoDB dari satu tempat ke tempat lain membutuhkan perintah seperti
Berikut adalah bagian dari Dokumentasi MySQL 5.5 yang menjelaskan apa yang perlu dipertimbangkan
Dengan adanya peringatan dan protokol ini, berikut adalah tindakan yang disarankan
Untuk contoh ini, mari kita coba mengembalikan
tags
tabel kemydb
databaseLANGKAH 1
Pastikan Anda memiliki cadangannya
.frm
dan.ibd
file di dalamnya/tmp/innodb_data
LANGKAH 2
Dapatkan
CREATE TABLE tags
pernyataan itu dan jalankan sebagaiCREATE TABLE mydb.tags ...
. Pastikan strukturnya sama persis seperti aslinyatags.frm
LANGKAH # 3
Hapus yang kosong
tags.ibd
menggunakan MySQLLANGKAH # 4
Bawa salinan cadangan
tags.ibd
LANGKAH # 5
Tambahkan
tags
tabel ke Kamus Data InnoDBLANGKAH 6
Uji aksesibilitas tabel
Jika Anda mendapatkan hasil yang normal, selamat Anda mengimpor tabel InnoDB.
LANGKAH 7
Di masa depan, tolong jangan hapus ibdata1 dan log-nya
Cobalah !!!
Saya sudah membahas hal-hal seperti ini sebelumnya
Apr 23, 2012
: MySQL: cara mengembalikan tabel yang disimpan dalam file .frm dan .ibd?Sep 28, 2011
: Cara Memulihkan tabel InnoDB yang file-nya dipindahkanCAVEAT
Bagaimana jika Anda tidak tahu struktur tabel
tags
?Ada alat untuk mendapatkan pernyataan CREATE TABLE hanya dengan menggunakan
.frm
file. Saya menulis posting tentang ini juga: Bagaimana cara mengekstrak skema tabel hanya dari file .frm? . Dalam posting itu, saya menyalin file .frm ke mesin Windows dari kotak Linux, menjalankan alat Windows dan mendapatkanCREATE TABLE
pernyataan.sumber
weblyize
.tags
'ada. Harap LAYAR tablespace sebelum IMPOR. Jadi saya mencoba menjalankan alter tablespace terlebih dahulu, dan mendapatkan kesalahan ini: ERROR 1146 (42S02): Tabel 'weblyize.tags' tidak ada . Apa yang dapat saya?CREATE TABLE ...
kemudian ikuti langkah-langkah Anda! Anda menyelamatkan saya dari keharusan menulis ulang mereka 100% dari awal! Itu tidak mengimpor kunci asing tetapi tidak apa-apa saya bisa melakukannya sendiri! Sekali lagi terima kasih!Saya memiliki situasi yang sama, Tidak dapat menjatuhkan atau membuat tblname tertentu. Prosedur perbaikan saya adalah:
Hentikan MySQL.
Hapus ib_logfile0 dan ib_logfile1.
Hapus file tblname. PERINGATAN: INI AKAN SEGERA HAPUS DATA ANDA
Mulai MySQL.
sumber
Saya punya masalah ini juga. Saya menghapus
ibdata1
secara tidak sengaja dan semua data saya hilang.Setelah pencarian 1-2 hari di google dan SO, akhirnya saya menemukan solusi yang menyelamatkan hidup saya (saya punya begitu banyak database dan tabel dengan catatan besar).
ambil cadangan dari
/var/lib/mysql
pulihkan skema tabel dari
.frm
file dengan dbsake (ada pilihan lain! mysqlfrm . tapi tidak berhasil untuk saya)buat tabel baru (dengan nama baru) dengan skema yang diekspor.
Buang data tabel baru dengan perintah ini:
/var/lib/mysql/database-name
dan apakah ada data (.ibd
file) untuk tabel lama, hapus itu.sumber