MySQL పట్టికలు పునరుద్ధరించు మాత్రమే .frm మరియు .ibd ఫైళ్లు అందుబాటులో ఉన్నప్పుడు

పరిష్కరించడానికి ఎలా “MySQL లోపం #1146 - పట్టిక ఉనికిలో లేదు” ఫైళ్లను బదిలీ వలన .idb (InnoDB) నేరుగా డైరెక్టరీల మధ్య (tablespace).

logo_mysql

సమస్య

సమస్యలకు మేము సృష్టించడానికి సమస్యలు ఉన్నాయి. నేను WordPress మరియు ఆలోచన ఉపయోగించి ఒక వెబ్సైట్ సిద్ధం చేసింది: ఇలాంటి PHP పనిచేస్తుంది ఎలా చూడండి 7? అలాగే, నా WampServer ఉపయోగిస్తారు PHP వంటి 5.6, అప్పుడు నేను వచ్చింది “సంతోషంగా” అప్గ్రేడ్ ఆలోచన WampServer 2.5 (Apache-2.4.9, Mysql-5.6.17, Php5.5.12) కోసం WampServer 3.0.6 (Apache2.4.23, Mysql5.7.14, Php5.6.25 మరియు Php 7.0.10).

స్పష్టమైన, నేను బ్యాకప్ ద్వారా ప్రారంభించారు, కానీ నా పెద్ద తప్పు SQL అటువంటి సైట్ ఎగుమతి ఎంచుకుంటే జరిగినది, బదులుగా, కేవలం MySQL ఫైళ్లు కాపీని తయారు (mysql / డేటా) మరియు అప్లికేషన్ (www / సైట్). నేను పని నమ్మకం అని, ముందు.

PHP తో కొత్త WampServer సంస్థాపించిన తర్వాత 7, నేను అక్కడ MySQL బ్యాకప్ ఫైళ్లు మరియు అప్లికేషన్ తిరిగి చాలు, నేను బ్రౌజర్ పరీక్ష మాత్రమే, నటించలేదు సైట్, కానీ బ్లాగు సంస్థాపన స్క్రీన్ అది ఒక కొత్త వెబ్సైట్ ఉన్నట్లయితే. జెల్లీ! డేటాబేస్ సరే ఉంటే చూశాను చూడటానికి ఓపెన్ PHPMyAdmin ఆ, డేటాబేస్ జాబితా ఉన్నప్పటికీ, డేటా వీక్షించడానికి పట్టిక క్లిక్ చేసినప్పుడు క్రింది దోష సందేశం కనిపించింది:

  MySQL లోపం #1146 - టేబుల్ <TABLE_NAME> ఉనికిలో లేదు

నేను శోధించడం మరియు నేను మీరు మాత్రమే కాపీ లేదా మరొక MySQL MySQL డైరెక్టరీ నేరుగా ఫైళ్ళను తరలించడానికి ఫైళ్లు రకం MyISAM ఉంటే చేయవచ్చు గుర్తించారు, పొడిగింపు .frm .MYD .MYI ఉన్నవారు. నేను ఏమైందో తెలియదు, కానీ నా డేటాబేస్ InnoDB హాజరయ్యింది (.frm ఇ .idb). దురదృష్టవశాత్తు, ఈవెంట్ MySQL డాక్యుమెంటేషన్ చూసిన మాత్రమే తర్వాత ఇప్పటికే హెచ్చరించారు:

  మీరు స్వేచ్ఛగా తరలించడానికి కాదు .డేటాబేస్ డైరెక్టరీల మధ్య IBD ఫైళ్లు వంటి మీరు MyISAM పట్టిక ఫైళ్ళతో చెయ్యవచ్చు. 
  InnoDB షేర్డ్ tablespace నిల్వ పట్టిక నిర్వచనం డేటాబేస్ పేరు ఉన్నాయి. 
  లావాదేవీ ID లు మరియు లాగిన్ tablespace ఫైళ్లలో నిల్వ క్రమం సంఖ్యలు కూడా డేటాబేస్ మధ్య తేడా.

పరిష్కారం

నేను కొన్ని సాధారణ పరిష్కారాలను ఏమి వచ్చింది, కానీ నేను ఇక్కడ నిజంగా నాకు పని చేసే ఒక వర్ణించలేనిది, ఇది చాలా క్లిష్టమైన కనిపిస్తున్నప్పటికీ, పోస్ట్ కనుగొనబడలేదు “పునరుద్ధరించడం పట్టిక(లు) MySQL డేటాబేస్ లో frm లేదా IBD ఫైళ్లు మాత్రమే అందుబాటులో ఉన్నప్పుడు“.

ముందు, అయితే, జ్ఞానం ద్వారా, ఇది InnoDB పోలిస్తే గుర్తు విలువ, MySQL .ibd లో .frm ఫైళ్లు మరియు డేటా దాని నిర్మాణం ఉంచుతుంది. తగినంత సిద్ధాంతం, పూనుకొను అనుమతిస్తుంది!

అడుగు 1: .frm నిర్మాణం తిరి

నేను అన్నాడు వంటి, .frm పట్టిక ఆకృతిని కలిగి. మొదటి మేము ప్రసిద్ధ డేటా తరువాత ఆ నిర్మాణం మరియు పునరుద్ధరించుకోవడానికి. మీరు దీన్ని చెయ్యవచ్చు 3 వివిధ పద్ధతులు క్రింద వివరించిన, ముందు మరింత, నాకు మీరు గురించి ఏదో చెప్పనివ్వండి “MySQL యుటిలిటీస్”.

MySQL యుటిలిటీస్ | mysqlfrm

మీరు ప్రతిపాదిత పద్ధతిని ఉపయోగించడానికి ఉద్దేశ్యము లేకపోతే 1 (ఆన్లైన్) అప్పుడు మీరు సాధనం ఉపయోగించడానికి అవసరం “mysqlfrm” అందించిన “MySQL యుటిలిటీస్“.

ఈ సాధనం డేటా నిర్మాణం గ్రహించి పట్టిక సృష్టి కోసం SQL స్క్రిప్ట్ ఉత్పత్తి. ఈ కోసం, డౌన్లోడ్ “MySQL యుటిలిటీస్” (mysql-1.6.4-winx64.msi-వినియోగాలు వంటి ఏదో) మరియు ఇన్స్టాల్-o.

కన్సోల్ తెరవడానికి (కమాండ్ / OF) మరియు డిఫాల్ట్ ఇన్స్టాలేషన్ డైరెక్టరీ తరలించడానికి CD ఆదేశాన్ని ఉపయోగించండి (సి వంటి ఏదో:\Program Files MySQL MySQL యుటిలిటీస్ 1.6\). ఆ డైరెక్టరీలో లోపల ఆ ఎగ్జిక్యూట్ గమనిక mysqlfrm.exe.

  CD "C:\Program Files  MySQL MySQL యుటిలిటీస్ 1.6 "

.frm కలిగి పట్టిక ఆకృతిని సేకరించేందుకు దిగువన ఉన్న పద్ధతుల్లో మాత్రమే ఎంచుకోవచ్చు:

1విధానం నం | ఆన్లైన్

1. వెబ్సైట్ను సందర్శించండి https://recovery.twindb.com/;
2. ఏ మెను బందుకట్టు “నిర్మాణం పునరుద్ధరించు” ఆపై లో “.frm ఫైలు నుండి“;
3. బటన్ క్లిక్ చేయండి “బ్రౌజర్…” మరియు మీ .frm ఫైల్ను ఎంచుకోండి; ఇ
4. బటన్ క్లిక్ చేయండి “అప్లోడ్” మరియు పట్టిక సృష్టి స్క్రిప్ట్ తెరపై కనిపిస్తుంది.

మీరు ఒకసారి అన్ని పట్టికలు తో ఒకే స్క్రిప్ట్ సృష్టించడం బహుళ .frm పంపవచ్చు. మీరు ముందు అన్ని దాని .frm ఒక .zip సృష్టించడానికి వీలు “బ్రౌజర్ / అప్లోడ్”.

2విధానం నం | ఉపయోగించి –విశ్లేషణ

/* ఉదాహరణ జెనరిక్ */
   mysqlfrm -diagnostic "<మూలం / మార్గం>/mytable.frm" > "<గమ్యం / path / recovered_mytable.sql>"
 
/* WordPress పట్టిక wp_posts.frm తో ఉదాహరణ ఆచరణలో */
   mysqlfrm --విశ్లేషణ "C:\WAMP  బిన్  mysql  mysql5.6.17  డేటా  meubanco  wp_posts.frm" > "C:\recovered_wp_posts.sql"

3విధానం నం | ఉపయోగించి –సర్వర్

/* ఉదాహరణ జెనరిక్ */
  mysqlfrm -server=రూట్:mypassword@localhost -port=3311 "<మూలం / మార్గం>/mytable.frm" > "<గమ్యం / మార్గం>/recovered_mytable.sql"
 
/* WordPress పట్టిక wp_posts.frm తో ఉదాహరణ ఆచరణలో */
  mysqlfrm --సర్వర్=రూట్@localhost --పోర్ట్=3307 ""సి:\WAMP  బిన్ mysql\mysqld.6.17\data\meubanco\wp_posts.frm" > "సి:\recovered_wp_posts.SQL"

MySQL పోర్ట్ వాడకండి! ఏ ఇతర అందుబాటులో ఎంచుకోండి. కమాండ్ పేర్కొన్న మార్గం లో సేవ్ అని ఒక Sql ఫైలు అవుట్పుట్ దారిమార్పులను గమనించండి (ఏ సందర్భంలో, సి:).

అడుగు 2: మీ డేటాబేస్ లో పట్టిక తిరి

ఒక కొత్త డేటాబేస్ లో, దశ ఉత్పత్తి స్క్రిప్ట్ తో ఒక పట్టికను సృష్టించడం 1. నేను వ్యక్తిగతంగా WampServer యొక్క ఒక క్లీన్ వెర్షన్ ఇన్స్టాల్ మరియు phpMyAdmin ఉపయోగించారు (http://localhost / phpmyadmin /) డేటాబేస్ దశలో రూపొందించినవారు SQL స్క్రిప్ట్ సృష్టించడానికి మరియు దిగుమతి 1 (recovered_wp_posts.sql). ఈ స్క్రిప్ట్ సృష్టిస్తుంది 2 మీ MySQL డేటాబేస్ డైరెక్టరీలో ఫైళ్లు:

  SUA_TABELA.frm
  SUA_TABELA.IDb

నా విషయంలో, ఈ ఫైళ్ళలో సృష్టించబడ్డాయి సి:\wamp64 బిన్ mysql mysql5.7.14 డేటా <MYDATABASE.GDB>. ఇతర పదాలు లో, మీ MySQL సంస్థాపన కోసం చూడండి మరియు డైరెక్టరీ గమనించండి సమాచారం ఒక డేటాబేస్ మరియు రెండు పేర్కొన్న ఫైళ్లను ఉంటుంది.

అడుగు 3: క్రొత్త .idb ఫైల్ను తొలగించండి

క్రొత్త .idb ఫైలు తొలగించడానికి, క్రింది SQL ఆదేశం అమలు:

/* ఉదాహరణ జెనరిక్ */
  ALTER TABLE mytable విస్మరించు TABLESPACE;
 
/* WordPress పట్టిక wp_posts తో ఉదాహరణ ఆచరణలో */
  ప్రాణ శతకము wp_posts విస్మరించు TABLESPACE;

ఎస్టే comando తొలగించడానికి o లింక్ entre ఒక tabela e o tablespace (వారు శారీరకంగా డేటాబేస్ ఫైళ్లు నిల్వ ఇక్కడ), మరియు ఫైల్ తొలగించడానికి .idb.

అడుగు 4: పాత .idb ఫైలు కాపీ

అసలు ఫైల్ .idb (డేటా కలిగి) మీరు దశ లో తొలగించబడింది .idb స్థానంలో కాపీ అవసరం 3. Ctrl + C మరియు Ctrl + V లేదా కమాండ్ లైన్ చంపడానికి ఉపయోగించండి.

అడుగు 5: పట్టిక క్రియాశీలం

దశ లో విరిగిన లింక్ 3 కింది కమాండ్లతో మీరు పునరుద్ధరించబడతాయి అవసరం:

/* ఉదాహరణ జెనరిక్ */
  ALTER TABLE mytable దిగుమతి TABLESPACE;
 
/* WordPress పట్టిక wp_posts తో ఉదాహరణ ఆచరణలో */
  TABLE wp_posts దిగుమతి TABLESPACE ఆల్టర్;

మీరు కొన్ని హెచ్చరికలు వస్తే చింతించకండి, అయితే, కింది దోష చూపిస్తున్న సాధారణ విచ్ఛిన్నం ఇవ్వాలని ఉండవచ్చు:

  #1808 - వ్యూహ అసమతుల్యత (టేబుల్ ROW_TYPE_DYNAMIC వరుసగా ఫార్మాట్ ఉంది, .IBD ఫైలు ROW_TYPE_COMPACT వరుసగా ఆకృతిని కలిగి ఉంది.)

ఈ సందర్భంలో, ఈ కారణంగా mysql5.7.14 వివిధ మార్గం జరిగింది (NEW) MySQL-6.5.17 సంబంధించి డిఫాల్ట్ పట్టిక సృష్టిస్తుంది (OLD), sem o ROW_FORMAT = కాంపాక్ట్.

అప్పుడు, మీరు MySQL ఉపయోగించి ఉంటే> mysql5.7.14 =, మీరు చేయవలసిందల్లా అన్ని పట్టిక సృష్టి నిర్వచనంలో ROW_FORMAT = కాంపాక్ట్ చేర్చండి ఉంది.

  పట్టికను సృష్టించండి `wp_posts` (. . .) ENGINE=InnoDB ROW_FORMAT=కాంపాక్ట్

ఇతర లోపాలు

రికార్డు కోసం, .frm డేటా వెలికితీత తరువాత ముందు, నేను కొన్ని తప్పులు కలిగి:

  # localhost న మూల: ... కనెక్ట్.
  # పోర్ట్పై ఎదిగింది సర్వర్ ప్రారంభిస్తోంది 3304 ... ERROR విఫలమైంది ఎదిగింది సర్వర్ ఆపడానికి ప్రయత్నించిన.  ప్రాసెస్ ID = 6648.
  ERROR: స్పాన్ సర్వర్ ఆపరేషన్ విఫలమైంది. క్లోన్ సర్వర్ లోపం: కమ్యూనికేట్ చేయడం సాధ్యపడలేదు కొత్త ఉదాహరణకు. ప్రాసెస్ ID = 6648.. నిర్ధారణకు, మళ్ళీ వినియోగ అమలు మరియు వా డు ది --ఎదిగింది సర్వర్ నుండి సందేశాలను వీక్షించేందుకు మరియు సరిచేయడానికి అప్పుడు అందించిన ఏ లోపాలు మళ్ళీ వినియోగ అమలు అతిదీర్ఘత ఎంపికను.
  SUCCESS: PID తో ప్రక్రియ 6648 (PID యొక్క చైల్డ్ ప్రోసెస్ 7264) రద్దు చేయబడింది.
ట్రేస్బ్యాక్ (ఇటీవల కాల్ గత):
  ఫైలు "G:\ade  నిర్మించడానికి  sb_0-19921351-1470074463.97  పైథాన్-2.7.6-windows-x86-64bit  lib  సైట్ ప్యాకేజెస  cx_Freeze  initscripts  Console.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'

WordPress యొక్క నిర్దిష్ట సందర్భంలో, మీరు .frm పొందిన 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

హిట్స్ మొత్తం సంఖ్య: 21390

12 సమీక్షలు “MySQL పట్టికలు పునరుద్ధరించు మాత్రమే .frm మరియు .ibd ఫైళ్లు అందుబాటులో ఉన్నప్పుడు

  1. రోడ్రిగో అన్నారు:

    మీరు కింది దోష సందేశం చూడండి ఉన్నప్పుడు ఏమి: #1815 – అంతర్గత లోపం. పట్టికలో LSNs రీసెట్ కాదు “MYDATABASE.GDB”.”minhatabela”: డేటా నిర్మాణం అవినీతి.
    అది సాధ్యం డేటా మానవీయంగా ఇన్సర్ట్ చేపట్టాలి? దీన్ని ఎలా?
    నేను ధన్యవాదాలు.

  2. Cristian U అన్నారు:

    హాయ్ టేలర్,

    ఎలా మీరు ఈ లోపం పరిష్కరించడానికి లేదు:
    ERROR: స్పాన్ సర్వర్ ఆపరేషన్ విఫలమైంది. క్లోన్ సర్వర్ లోపం: కొత్త ఉదాహరణకు కమ్యూనికేట్ చేయడం సాధ్యపడలేదు. ప్రాసెస్ ID = 6648.. నిర్ధారణకు, మళ్ళీ వినియోగ అమలు మరియు ఉపయోగించడానికి –ఎదిగింది సర్వర్ నుండి సందేశాలను వీక్షించేందుకు మరియు సరిచేయడానికి అప్పుడు అందించిన ఏ లోపాలు మళ్ళీ వినియోగ అమలు అతిదీర్ఘత ఎంపికను.
    SUCCESS: PID తో ప్రక్రియ 6648 (PID యొక్క చైల్డ్ ప్రోసెస్ 7264) రద్దు చేయబడింది.

    నేను అదే సందేశం ఉంచడానికి మరియు నేను ఎలా పరిష్కరించడానికి తెలుసు don't.

    ధన్యవాదాలు

  3. JOTHA అన్నారు:

    కామ్రేడ్ గొప్ప పోస్ట్.

    స్పష్టమైన, సంక్షిప్తమైన, పూర్తి మరియు నమ్మకమైన.

    ఇది చాలా సహాయపడింది.

ఒక Reply వదిలి

మీ ఇమెయిల్ చిరునామా ప్రచురితమైన కాదు. లు గుర్తించబడతాయి గుర్తించబడతాయి *