Bagaimana cara mengekstrak skema tabel dari hanya file .frm?

8

Saya telah mengekstrak direktori data mysql dari cadangan dan perlu mendapatkan skema dari tabel lama, namun ini adalah cadangan dari mesin yang berbeda.

Saya telah membaca cukup banyak tutorial hari ini tentang cara melakukan ini, tetapi setiap kali tampaknya gagal atau saya akhirnya harus menginstal ulang mysql karena mysql hang atau crash. Saya sudah mencoba yang berikut ini:

  • Buat database yang berbeda
  • Buat tabel dengan nama yang sama di database itu
  • Ganti file
  • Stop / Mulai mesin
  • Pulihkan dari .frmfile

Saya sudah mencoba berbagai pesanan dan kombinasi.

Apakah ada alat eksternal yang dapat mengekstrak skema dari .frmfile? Saya dapat melihat nama kolom jika saya membuka file. Saya telah melihat tetapi sepertinya saya tidak dapat menemukan apa pun yang akan memungkinkan saya untuk melakukan ini.

Terima kasih sebelumnya.

Relequestual
sumber

Jawaban:

8

Di TwinDB kami membuat antarmuka web untuk mysqlfrm. Ini gratis dan mudah digunakan.

Untuk memulihkan struktur tabel dari Anda hanya perlu mengunggah file .frm.

Berikut langkah-langkahnya. 1. Buka https://recovery.twindb.com/ . Klik pada "Pulihkan Struktur" masukkan deskripsi gambar di sini

  1. Di submenu berikutnya klik "from .frm file" masukkan deskripsi gambar di sini

  2. Pada tampilan selanjutnya klik "Browse" dan pilih file .frm pada disk lokal. Klik pada "Unggah" masukkan deskripsi gambar di sini

  3. Tunggu sampai ia melakukan keajaiban masukkan deskripsi gambar di sini

  4. Dapatkan struktur pulih. masukkan deskripsi gambar di sini

Mungkin juga untuk mengunggah arsip dengan banyak file .frm. Situs ini akan memulihkan semuanya.

akuzminsky
sumber
2
Situs tidak lagi berfungsi.
Anbuselvan Rocky
@AnbuselvanRocky Unduh mysqlfrm(Saya mengunduh versi 1.6.5), dan menjalankan inimysqlfrm --diagnostic /path/to/my_table.frm
MyTitle
5

Saya telah menjawab pertanyaan seperti ini sebelumnya

Saya telah merujuk ke sebuah blog dari Chris Calendar untuk menghubungkan .ibdfile kembali ke kamus data.

Jika Anda tidak .ibdcocok .frm, kemungkinan MySQL sedang berjalan dengan innodb_file_per_table off. Silakan merujuk keFeb 03, 2012 posting tentang itu. Jika ini Linux, pastikan Anda menjalankan

cd /var/lib/mysql
chown -R mysql:mysql *

sebelum memulai mysql.

Cobalah !!!

INFO TAMBAHAN

Di bagian bawah blog terakhir itu tertulis:

Ok, saya ketagihan! Di mana saya bisa mendapatkannya?

Utilitas .frm reader adalah bagian dari rilis-1.3.0 Alpha baru yang tersedia sebagai unduhan terpisah di http://dev.mysql.com/downloads/tools/utilities/ . Cukup pilih repositori platform atau repositori sumber dan unduh.

Kami menyambut komentar Anda dan berharap utilitas ini akan membantu memperluas diagnosis dan alat pemulihan Anda.

UPDATE 2013-06-11 14:05 EDT

Saya punya kabar baik. Saya menginstal versi Windows Utilities MySQL. Saya menguji program mysqlfrm dari baris perintah. Saya diuji mendapatkan .frminfo dari user.frm dalam skema mysql. Inilah yang saya dapat:

C:\MySQL_5.6.10\data\mysql>mysqlfrm --server=root:rootpassword@localhost mysql:user.frm --port=3307
# Source on localhost: ... connected.
# Starting the spawned server on port 3307 ... done.
# Reading .frm files
#
# Reading the user.frm file.
#
# CREATE statement for user.frm:
#

CREATE TABLE `mysql`.`user` (
  `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
  `User` char(16) COLLATE utf8_bin NOT NULL DEFAULT '',
  `Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
  `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
  `ssl_cipher` blob NOT NULL,
  `x509_issuer` blob NOT NULL,
  `x509_subject` blob NOT NULL,
  `max_questions` int(11) unsigned NOT NULL DEFAULT '0',
  `max_updates` int(11) unsigned NOT NULL DEFAULT '0',
  `max_connections` int(11) unsigned NOT NULL DEFAULT '0',
  `max_user_connections` int(11) unsigned NOT NULL DEFAULT '0',
  `plugin` char(64) COLLATE utf8_bin DEFAULT '',
  `authentication_string` text COLLATE utf8_bin,
  `password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  PRIMARY KEY (`Host`,`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges'

#...done.

C:\MySQL_5.6.10\data\mysql>

Ini benar-benar berfungsi. Basis data berjalan di komputer desktop saya menggunakan port 3306. Saya harus memberikan 3307 sebagai port untuk menjalankan proses spawned.

Saya bisa memindahkan .frmdari kotak Linux ke mesin Windows dan melakukan hal yang sama.

Cobalah !!!

RolandoMySQLDBA
sumber