Làm thế nào có thể trích xuất lược đồ bảng từ chỉ tệp .frm?


8

Tôi đã trích xuất thư mục dữ liệu của mysql từ bản sao lưu và cần lấy lược đồ từ một bảng cũ, tuy nhiên đó là bản sao lưu từ một máy khác.

Tôi đã đọc một số lượng lớn các hướng dẫn ngày hôm nay về cách làm điều này, nhưng mỗi lần nó dường như không thành công hoặc cuối cùng tôi phải cài đặt lại mysql vì mysql bị treo hoặc gặp sự cố. Tôi đã thử như sau:

  • Tạo một cơ sở dữ liệu khác nhau
  • Tạo bảng có cùng tên trong cơ sở dữ liệu đó
  • Thay thế tập tin
  • Dừng / Khởi động động cơ
  • Khôi phục từ .frmtập tin

Tôi đã thử trong các đơn đặt hàng và kết hợp khác nhau.

Có công cụ bên ngoài nào có thể trích xuất lược đồ từ .frmtệp không? Tôi có thể thấy tên cột nếu tôi mở tệp. Tôi đã có một cái nhìn nhưng dường như tôi không thể tìm thấy bất cứ điều gì cho phép tôi làm điều này.

Cảm ơn trước.


Câu trả lời:


8

Tại TwinDB, chúng tôi đã xây dựng một giao diện web mysqlfrm. Nó miễn phí và dễ sử dụng.

Để khôi phục cấu trúc bảng từ bạn chỉ cần tải lên tệp .frm.

Đây là các bước. 1. Mở https://recovery.twindb.com/ . Nhấp vào "Cấu trúc phục hồi" nhập mô tả hình ảnh ở đây

  1. Trong menu con tiếp theo, nhấp vào "từ tệp .frm" nhập mô tả hình ảnh ở đây

  2. Trên giao diện tiếp theo, nhấp vào "Duyệt" và chọn tệp .frm trên đĩa cục bộ. Nhấp vào "Tải lên" nhập mô tả hình ảnh ở đây

  3. Đợi đến khi nó làm điều kỳ diệu nhập mô tả hình ảnh ở đây

  4. Lấy cấu trúc thu hồi. nhập mô tả hình ảnh ở đây

Cũng có thể tải lên một kho lưu trữ với một loạt các tệp .frm. Trang web sẽ phục hồi chúng hoàn toàn.


2
Các trang web không còn hoạt động.
Anbuselvan Rocky

@AnbuselvanRocky Tải xuống mysqlfrm(Tôi đã tải xuống phiên bản 1.6.5) và chạy nómysqlfrm --diagnostic /path/to/my_table.frm
MyTitle

5

Tôi đã trả lời những câu hỏi như thế này trước đây

Tôi đã đề cập đến một blog từ Lịch Chris về việc kết nối .ibdcác tệp trở lại từ điển dữ liệu.

Nếu bạn không có .ibdcùng .frm, rất có thể MySQL đã chạy với innodb_file_per_table . Hãy tham khảo Feb 03, 2012bài viết trên đó. Nếu đây là Linux, hãy đảm bảo bạn chạy

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

trước khi bắt đầu mysql.

Hãy thử một lần !!!

THÔNG TIN BỔ SUNG

Ở dưới cùng của blog cuối cùng nó nói:

Ok, tôi bị mắc kẹt! Tôi có thể lấy nó ở đâu?

Tiện ích trình đọc .frm là một phần của phiên bản Alpha-1.3.0 mới có sẵn dưới dạng bản tải xuống riêng biệt tại http://dev.mysql.com/doads/tools/utilities/ . Đơn giản chỉ cần chọn kho lưu trữ nền tảng hoặc kho lưu trữ nguồn và tải xuống.

Chúng tôi hoan nghênh ý kiến ​​của bạn và hy vọng rằng tiện ích này sẽ giúp mở rộng bộ công cụ chẩn đoán và phục hồi của bạn.

CẬP NHẬT 2013-06-11 14:05 EDT

Tôi có tin tốt. Tôi đã cài đặt phiên bản Windows của Tiện ích MySQL. Tôi đã thử nghiệm chương trình mysqlfrm từ dòng lệnh. Tôi đã thử nghiệm lấy .frmthông tin từ user.frm trong lược đồ mysql. Đây là những gì tôi nhận được:

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>

Nó thật sự có hiệu quả. Cơ sở dữ liệu đang chạy trên máy tính để bàn của tôi bằng cổng 3306. Tôi đã phải cung cấp 3307 dưới dạng cổng để chạy quy trình sinh sản.

Tôi có thể chuyển .frmtừ hộp Linux sang máy Windows và làm tương tự.

Hãy thử một lần !!!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.