לשחזר טבלאות MySQL כאשר רק .frm קבצים and. מחלת המעי הדלקתי זמינים

איך לפתור “שגיאה Mysql #1146 -טבלה לא קיים” נגרם על-ידי העברת קבצים .IDB (InnoDB) ישירות בין ספריות (מרחב טבלאות).

logo_mysql

הבעיה

רבות מהבעיות שיש לנו הבעיות שיצרנו. היה לי פשוט להגדיר אתר באמצעות וורדפרס, חשבתי: מה דעתך לראות איך זה עובד ב- PHP 7? אוקיי, משמש WampServer שלי PHP 5.6, אז הייתי צריך “שמח” הרעיון לשדרג WampServer 2.5 (2.4.9 אפאצ'י, MySQL-5.6.17, PHP 5.5.12) עבור WampServer 3.0.6 (אפאצ'י 2.4.23, MySQL 5.7.14, 5.6.25 PHP ו- Php 7.0.10).

בטח, נכתבו על ידי גיבוי, אך את השובר הגדול שלי היה לבחור שלא לייצא SQL מתוך אתר כזה, במקום זאת, בדיוק הכנתי עותק של הקבצים MySQL (MySQL/נתונים) לבין היישום (www/אתר). . הייתי בטוח שזה יעבוד, כמו במקרים הקודמים.

לאחר התקנת את WampServer החדש עם PHP 7, לשים קבצי הגיבוי ובחזרה יישום, רק כאשר הלכתי לבדוק על ידי הדפדפן, לא הופיע באתר, אבל המסך של התקנת וורדפרס כאילו זה אתר חדש. קפא! פתח PHPMyAdmin ובדוק אם מסד הנתונים היה בסדר, ראיתי את זה, למרות שהיא נמנית במסד הנתונים, כאשר לחצת על השולחן כדי להציג את הנתונים הודעת השגיאה הבאה:

  MySQL שגיאה #1146 -טבלה <TABLE_NAME> לא איכפת לו ' t קיים

. חיפשתי, גיליתי כי אתה יכול רק העתק או העבר את הקבצים ישירות לספריית MySQL MySQL אחר אם הקבצים הם מסוג MyISAM, אלה עם סיומת הקובץ. עקרות. . פרנצ'סקה. MYI. אני לא יודע מה קרה, אבל הנתונים שלי הופיע בתור InnoDB (.עקרות and. idb). למרבה הצער, רק לאחר מעשה MySQL התראה תיעוד:

  אתה לא יכול לנוע בחופשיות .מחלת המעי הדלקתי קבצים בין ספריות מסד נתונים את אתה יכול עם קבצי שולחן MyISAM. 
  הגדרת טבלה המאוחסן על מרחב טבלאות InnoDB משותפים כולל את שם מסד הנתונים. 
  הטרנזקציות, יומן רצף מספרים המאוחסנים בקבצי צוין גם שונים בין מסדי נתונים.

פתרון

Cheguei משחק פלטפורמ תרופות soluções algumas, mas אתה descrever לי funcionou realmente מם פארא única que, apesar דה parecer טוב מאיס complexa, encontrada אין דואר “שחזור טבלה(s) במסד MySQL כאשר קבצים עקרות או מחלת המעי הדלקתי זמינים רק“.

לפני, porém, conhecimento דה título, וייל lembrar que em relação ao tipo InnoDB, MySQL שלך מבנה שומר קבצים ונתונים ב- .frm. מחלת המעי הדלקתי. התיאוריה מספיק, . בוא ניגש לעניין!

שלב 1: צור מחדש את המבנה של הקבצים .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 Utilities 1.6"

לבחור רק באחת השיטות להלן כדי לחלץ את מבנה הטבלה הכלולה בקבצים .frm:

1º שיטה | באינטרנט

1. עבור לאתר האינטרנט HTTPS://recovery.twindb.com/;
2. לחץ על תפריט “לשחזר את המבנה” ואז ב “עקרות הקובץ.“;
3. לחץ על לחצן “דפדפן…” בחר את הקובץ עקרות; ו
4. לחץ על לחצן “להעלות” התסריט יצירת הטבלה תוצג על המסך.

זה אפשרי לשלוח עקרות קבצים מרובים פעם יוצר ב- script בודד עם כל הטבלאות. רק כדי לאפשר לך ליצור. zip עם כל .frm שלו לפני “דפדפן/להעלות”.

2º שיטה | באמצעות –אבחון

/* דוגמה כללית */
   mysqlfrm-אבחון "<מקור/נתיב>/mytable.frm" > "<destination/path/recovered_mytable.sql>"
 
/* דוגמה בפועל עם הטבלה wp_posts.frm WordPress */
   mysqlfrm --אבחון "C:\wampbinmysqlmysql5.6.17datameubancowp_posts.frm" > "C:\recovered_wp_posts.sql"

3º שיטה | באמצעות –שרת

/* דוגמה כללית */
  mysqlfrm-שרת=שורש:mypassword@localhost-port=3311 "<מקור/נתיב>/mytable.frm" > "<יעד/נתיב>/recovered_mytable.sql"
 
/* דוגמה בפועל עם הטבלה wp_posts.frm WordPress */
  mysqlfrm --שרת=שורש@localhost --יציאה=3307 ""(ג):\wampbinmysql\mysql5.6.17\data\meubanco\wp_posts.frm" > "(ג):\recovered_wp_posts.sql"

Não use a porta do MySQL! Escolha qualquer outra disponível. Note que o comando redireciona a saída para um arquivo .sql que é salvo no caminho especificado (במקרה, (ג):).

שלב 2: Recrie a tabela no seu Banco de Dados

במסד נתונים חדש, יצירת טבלה עם קובץ ה-script שנוצר בשלב 1. אני באופן אישי התקנת גירסה נקייה של WampServer ומשמש PHPMyAdmin (http://localhost/phpmyadmin /) כדי ליצור את מסד הנתונים וייבא את ה-script SQL שנוצר בשלב 1 (recovered_wp_posts.sql). התסריט הזה תיצור 2 הקבצים בספריית מסד הנתונים MySQL:

  SUA_TABELA.עקרות SUA_TABELA.IDB

במקרה שלי, קבצים אלה נוצרו (ג):\wamp64binmysqlmysql5.7.14data<meubanco>. Ou seja, procure sua instalação do MySQL e note que no diretório data haverá sua base de dados e os dois arquivos citados.

שלב 3: Remova o novo arquivo .idb

Para remover o novo arquivo .idb, execute o seguinte comando SQL:

/* דוגמה כללית */
  ALTER TABLE mytable DISCARD TABLESPACE;
 
/* Exemplo na prática com a tabela wp_posts do WordPress */
  Wp_posts ALTER TABLE למחוק מרחב טבלאות;

פקודה זו מסירה את הקישור בין הטבלה את מרחב טבלאות (היכן מאוחסנות באופן פיזי קבצי מסד הנתונים), להסיר את הקובץ .IDB.

שלב 4: העתק את הקובץ הישן של .IDB

הקובץ המקורי .IDB (המכיל את הנתונים) צריך להעתיק את המקום שנמחק בשלב .IDB 3. להשתמש Ctrl + C, Ctrl + V, או להתאבד באמצעות שורת הפקודה.

שלב 5: הפעל מחדש את הטבלה

הקישור המנותק בשלב 3 לשחזר עם הפקודה הבאה:

/* דוגמה כללית */
  Mytable ALTER TABLE ייבוא מרחב טבלאות;
 
/* Exemplo na prática com a tabela wp_posts do WordPress */
  Wp_posts ALTER TABLE ייבוא מרחב טבלאות;

אל תדאג אם אתה מקבל כמה אזהרות, porém, זה יכול להיות תקלה כללית מופיע השגיאה הבאה:

  #1808 - אי-התאמת סכימה (בטבלה יש תבנית שורה ROW_TYPE_DYNAMIC, .מחלת המעי הדלקתי לקובץ יש תבנית שורה ROW_TYPE_COMPACT.)

במקרה זה, זה קרה עקב באופן שונה מאשר mysql 5.7.14 (חדש) יוצרת טבלה ברירת המחדל בהשוואה ל- Mysql-5.6.17 (זקן), בלי ROW_FORMAT = קומפקטי.

אז, אם אתה משתמש MySQL > = mysql 5.7.14, כל שעליך לעשות הוא להוסיף ROW_FORMAT = דחוס בתוך ההגדרה של יצירת טבלה.

  CREATE TABLE 'wp_posts' (. . .) מנוע=Innodb ROW_FORMAT=קומפקטי

שגיאות אחרות

רק למען הפרוטוקול, לפני קבלת הצלחה חילוץ נתונים מ. עקרות, היה לי כמה שגיאות:

  # מקור על localhost: ... מחובר.
  # החל לשרת מכירותיו ביציאה 3304 ... שגיאה מנסה לעצור נכשלה שרת אירועיו.  מזהה התהליך = 6648.
  שגיאה: ספון כשל הפעלת השרת. שגיאת שרת שיבוט: אפשרות ליצור קשר עם חדש מופע. מזהה תהליך = 6648.. כדי לאבחן, הפעל שוב את תוכנית השירות, השתמש את --מלל אפשרות להציג את הודעות מהשרת מכירותיו ולתקן שגיאות שהוצגו ולאחר מכן הפעל שוב את תוכנית השירות.
  הצלחה: התהליך עם PID 6648 (תהליך צאצא של PID 7264) הופסקה.
Traceback (האחרונה תתקשרי בפעם האחרונה):
  קובץ "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 IOError: [Errno 13] הרשאה נדחתה: 'version_check'

במקרה הספציפי של וורדפרס, אתה צריך להסיר את קובץ ה-script שיצר את ה-SQL שנוצר תחת. עקרות, ברירת המחדל כל ערכי ‘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

סה כ כניסות: 21437

12 הערות על “לשחזר טבלאות MySQL כאשר רק .frm קבצים and. מחלת המעי הדלקתי זמינים

  1. רודריגו אמר:

    מה לעשות כאשר אתה רואה את הודעת השגיאה הבאה: #1815 – שגיאה פנימית. אין אפשרות לאפס את LSNs בטבלה “meubanco”.”myTable”: השחתת מבנה נתונים.
    ניתן להפעיל את הכיסויים של נתונים באופן ידני? איך לעשות את זה?
    מאז כבר תודה.

  2. כריסטיאן U אמר:

    היי טיילור,

    איך אתם פותרים את השגיאה הזאת:
    שגיאה: ספון כשל הפעלת השרת. שגיאת שרת שיבוט: אין אפשרות לקיים תקשורת עם המופע החדש. מזהה התהליך = 6648.. כדי לאבחן, הפעל שוב את תוכנית השירות ולהשתמש –מלל אפשרות להציג את הודעות מהשרת מכירותיו ולתקן שגיאות שהוצגו ולאחר מכן הפעל שוב את תוכנית השירות.
    הצלחה: התהליך עם PID 6648 (תהליך צאצא של PID 7264) הופסקה.

    אני ממשיך מקבל את אותה הודעה ואני לא יודע איך ´ לפתור את זה.

    . תודה

  3. רג'ינאלדו Luiz de Freitas אמר:

    מזל טוב טיילור, דידקטי אבל אפשרי!! אתה אותו הבחור.!

    חיבוק של תודה על שיתוף את החוויה שלך!

תשאיר הודעה

כתובת הדוא ל שלך לא יפורסם. שדות חובה מסומנים *