只有. frm 文件同 ibd 時可用恢復 mysql 表

如何解決 “mysql 錯誤 #1146 -表唔存在” 移動. idb 文件所造成 (InnoDB) 目錄之間直接 (表空間).

logo_mysql

個問題

好多問題, 我哋就係我哋創建嘅問題. 我啱啱建立了一個網站使用的 wordpress 以為: 去睇係點樣在 php 中點 7? 仲可以, 作為我 wampserver 使用 php 5.6, 所以我不得不 “快樂” 升級的主意 WampServer 2.5 (Apache 2.4.9, MySQL 5.6.17, PHP 5.5.12) 為 WampServer 3.0.6 (Apache 2.4.23, MySQL 5.7.14, 5. 6. 25 php 同 php 7.0.10).

答案係肯定嘅, 開始備份, 但我偉大嘅滑唔會喺呢類網站導出 sql, 相反, 頭先 mysql 文件的副本 (mysql/數據) 和應用程序 (www/網站). 我好有信心佢會做野, 像其他時代.

之後同 php 安裝新 wampserver 7, 將備份的文件和應用程序備份放, 只有當我去透過瀏覽器進行測試, 冇露面嘅網站, 但 wordpress 的安裝屏幕好似佢係一個新的網站. 凍結了! 打開 phpmyadmin 並檢查如果數據庫仲好好, 看到了,, 儘管被列在數據庫中, 當你单击上表, 以查看數據下面嘅錯誤消息:

  MySQL 錯誤 #1146 -表 <TABLE_NAME> 冇 ' t 存在

一直在尋找, 只係發現你可以只複製或移動嘅文件直接到另一個 mysql mysql 目錄, 如果文件係 myisam 類型, 那些帶有 frm 文件擴展名。 原發性三叉神經痛。 冰. 我唔知發生咩事, 但我嘅數據庫出現作為 innodb (.frm 同伊斯蘭開發銀行). 不幸嘅係, 只有事後 mysql 通知文件:

  你不能自由地移動 .炎症性腸病文件數據庫目錄之間  你可以使用 myisam 表文件. 
  存儲在共享嘅 innodb 錶空間嘅表定義包括數據庫名稱. 
  事務 id 同 日誌 存儲在表空間文件中嘅序列號都不同數據庫之間.

解決方案

我要做一些簡單的解決方案, 但我會描述喺呢度真係好適合我既唯一, 雖然看起來要複雜得多, 發現在後 “還原表(s) mysql 數據庫 frm 或炎症性腸病緊文件可用時只“.

之前, 然而, 知識的標題, 記得喺 innodb 類型, mysql 在文件中你守衛結構同數據係 ibd. frm。. 理論已經足夠, 等我哋切入正題!

一步 1: 重新創建. frm 文件嘅結構

正如所講, frm 包含您的表結構. 首先, 我們需要檢索呢種結構, 然後將數據填充. 你可以 3 下面描述的不同方法, 但之前, 讓我告訴你一些關於 “mysql 嘅實用程序”.

mysql 嘅實用程序 | mysqlfrm

如果你唔打算使用第一種方法提出了 (在線) 所以你需要使用的工具 “mysqlfrm” 提供嘅 “mysql 嘅實用程序“.

此工具將提取嘅數據結搆並生成創建表嘅 sql 腳本. 為此, 下載 “mysql 嘅實用程序” (好似 mysql-實用程序-1. 6. 4-winx64. msi) 并安裝它.

打開控制台 (命令 / 啲嘅) 使用 cd 命令來移動默認安裝目錄 (好似 C:\c: program filesmysqlmysql 實用程序 1.6\). 請注意, 該目錄是可執行文件 mysqlfrm.exe.

  裁傾會 "C:\c: program filesmysqlmysql 實用程序1.6"

選擇以下方法之一嚟提取你. frm 文件中包含的表結構:

1º方法 | 在線

1. 轉去網站 HTTPS://recovery.twindb.com/;
2. 单击菜單中 “恢復結構” 然後在 “由 frm 文件。“;
3. 单击制 “瀏覽器…” 並選擇你 frm 文件; 和
4. 单击制 “” 同表創建腳本會顯示在屏幕上.

它還可以發送多個文件 frm 一次生成所有表嘅單個腳本. 我只想讓你與所有其. frm 之前創建. zip “瀏覽器/貼”.

2º方法 | 使用 –診斷

/* 泛型示例 */
   mysqlfrm 診斷 "<源/路徑>/mytable.frm" > "<destination/path/recovered_mytable.sql>"
 
/* wordpress 喺實踐與 wp_posts. frm 表中示例 */
   mysqlfrm --診斷 "C:\wampbinmysqlmysql5.6.17datameubancowp_posts.frm" > "C:\recovered_wp_posts.sql"

3º方法 | 使用 –服務器

/* 泛型示例 */
  mysqlfrm 服務器=:密碼@本地主機端口=3311 "<源/路徑>/mytable.frm" > "<目的地/路徑>/recovered_mytable.sql"
 
/* wordpress 喺實踐與 wp_posts. frm 表中示例 */
  mysqlfrm --服務器=@本地主機 --端口=3307 ""(C):\wampbinMySQL\MySQL5.6.17\datameubancowp_posts.frm" > "(C):\recovered_wp_posts.SQL"

唔使用 MySQL 端口! 選擇任何其他可用. 請注意, 該命令輸出重定向到一個. sql 文件保存在指定的路徑中 (在案件, (C):).

一步 2: 重新創建您的數據庫中嘅表

在一個新的數據庫, 用喺第步中生成的腳本創建一個表 1. 我親自安裝 wampserver 乾淨版本和使用 phpmyadmin (http://本地主機/phpmyadmin/) 創建數據庫並導入步驟中創建的緊 sql 腳本 1 (recovered_wp_posts.sql). 此腳本將創建 2 mysql 數據庫目錄中嘅文件:

  SUA_TABELA.frm SUA_TABELA.伊斯蘭開發銀行

係我既例子, 在中創建呢啲文件 (C):\wamp64binmysqlmysql5.7.14data<我既位>. IE, 尋找你個 mysql 安裝, 請注意, 目錄中 日期 將你嘅數據庫和提及的兩個文件.

一步 3: 刪除新嘅. idb 文件

若要刪除新嘅. idb 文件, 運行以下 sql 命令:

/* 泛型示例 */
  alter table mytable 掉嘅表空間;
 
/* wordpress 喺實踐與 wp_posts 表中示例 */
  alter table wp_posts 掉嘅表空間;

此命令刪除表同表空間之間的連結 (在物理存儲數據庫文件), 同咳. idb 文件.

一步 4: 將舊嘅. idb 文件複製

原始的. IDB 文件 (它包含的數據) 要複製到在. idb 步驟中刪除了的地方 3. 使用 ctrl + c ctrl + v 同, 或者殺咗你自己通過使用命令行.

一步 5: 重新激活表

在步驟中斷開的連結 3 要用下面嘅命令恢復:

/* 泛型示例 */
  alter table mytable 導入表空間;
 
/* wordpress 喺實踐與 wp_posts 表中示例 */
  alter table wp_posts 導入的表空間;

唔使擔心, 如果你收到一些警告, 然而, 它可能會出現以下錯誤嘅一般故障:

  #1808 - 架構不匹配 (表具有 row_type_dynamic 行格式, .炎症性腸病文件具有 row_type_compact 行格式。)

在這種情況下, 發生由於不同過 mysql 5.7. 14 (新增功能) 創建一個默認表相比 mysql 5.6. 17 (老), 冇 row_format = 緊湊.

所以, 如果你使用的 mysql > = mysql 5.7. 14, 你需要做的就是添加 row_format = 契約在創建表嘅定義.

  創建表 ' wp_posts ' (. . .) 引擎=Innodb ROW_FORMAT=緊湊

outros 錯誤

Apenas 段 deixar registrado, 注 de obter 囌塞蘇 na extração de dados 做. frm, 結果 alguns 誤差:

  # 在本地主機上的源: ... 連接.
  # 在端口上啟動生成的服務器 3304 ... 試圖停止錯誤失敗生成的服務器.  進程 id = 6648.
  錯誤: 生成服務器操作失敗. 克隆服務器錯誤: 無法與通信 新增功能 實例. 進程 id = 6648.. 要診斷, 再次運行要實用工具同 使用--詳細程度選項查看由生成服務器郵件並糾正任何錯誤提出, 然後再次運行要實用程序.
  成功: 同 pid 進程 6648 (子進程的 pid 7264) 已終止.
追蹤 (最新電話持續):
  文件 "G:\adebuildsb_0-19921351-1470074463.97Python-2.7.6-windows-x86-64bitlibsite-packagescx_FreezeinitscriptsConsole.py",27,<糢塊>
  文件 "scripts\mysqlfrm.py",422,<糢塊>
  文件 ".\mysql\utilities\command\read_frm.py",439, 在 read_frm_files
  文件 ".\mysql\utilities\command\read_frm.py",166, 在 _spawn_server
  文件 ".\mysql\utilities\command\serverclone.py",180, 在 clone_server
  文件 ".\mysql\utilities\common\tools.py",273, 在 get_mysqld_version 時發生 io 錯誤: [Errno 13] 權限食檸檬: ' version_check'

冇卡索 específico 做 wordpress, 你需要刪除生成下生成的 sql 腳本。 frm, 所有條目默認 ‘0000-00-00 00:00:00', 否則, 將捕捉該錯誤:

  #1067 - 默認值 (默認) 對於 ' comment_date ' 無效

就係噉啦!

字體

http://www.voxteneo.com/restoring-tables-mysql-database-frm-ibd-files-available/

https://medium.com/@alexquick/transporting-mysql-tablespaces-from-5-6-to-5-7-517c01345fbb#.72zermd8b

http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html

https://lanmenezesbr.wordpress.com/2014/10/21/mysql-erro-1146-table-doesnt-exist/

http://stackoverflow.com/questions/7759170/mysql-table-doesnt-exist-but-it-does-or-it-should

總點擊數: 21390

12 評論 “只有. frm 文件同 ibd 時可用恢復 mysql 表

  1. 罗德里戈· 說::

    點算當你見到下面嘅錯誤消息: #1815 – 內部錯誤. 不能在表中重置 lsn “我既位”.”myTable”: 數據結搆損壞.
    我可以手動運行數據嘅插入? 如何做到這一點?
    因為都唔該晒你.

  2. 克里斯蒂安· U 說::

    HI 泰勒,

    你係點解決此錯誤的:
    錯誤: 生成服務器操作失敗. 克隆服務器錯誤: 無法與新實例進行通信. 進程 id = 6648.. 要診斷, 再次運行要實用程序和使用 –詳細程度選項查看由生成服務器郵件並糾正任何錯誤提出, 然後再次運行要實用程序.
    成功: 同 pid 進程 6648 (子進程的 pid 7264) 已終止.

    我不斷收到相同的消息, 我唔知點´去解決它.

    多謝你

留言

您的電子郵件地址就不會發佈. 與標記必填的字段 *