2015-09-18 14 views
6

Hoffentlich kann mir jemand helfen, ich habe viele der Wiederherstellungs-Antworten auf Stackoverflow recherchiert.Probleme beim Wiederherstellen einer .frm-Datei mit mysqlfrm

Ich habe den Fehler gemacht, den Datenordner von mysql zu kopieren und in den neuen wamp 2.5 mysql/mysl5.6.17/data-Ordner einzufügen.

Wenn ich auf eine Tabelle klicke, gibt es "Tabelle existiert nicht". Dies zeigt die, was zeigt

3688 [Warning] InnoDB: Can not open Tabelle craigmedia/wp_eg_grids aus dem internen Datenwörterbuch von InnoDB obwohl die FRM-Datei für die Tabelle vorhanden ist. Informationen dazu, wie Sie das Problem beheben können, finden Sie unter http://dev.mysql.com/doc/refman/5.6/en/innodb Fehlerbehebung.html.

Ich habe meinen Datenbankordner, der die .frm-Dateien enthält.

Ich habe versucht, mysqlfrm zu verwenden, um die Tabelle zu erholen, wie durch diesen Link erklärt: https://dba.stackexchange.com/questions/71596/restoring-mysql-tables-from-ibd-frm-and-mysqllogbin-files

Allerdings, wenn ich die Informationen in das mysqlfrm stellen die Ergebnisse sind unten gezeigt:

1.mysqlfrm [email protected] --port=445 --user=root C:/wamp/bin/mysql/mysql5.6.17/data/craigmedia/wp_eg_grids.frm > wp_eg-grids.txt 


Source on localhost: ...connected 

ERROR: Cannot read wp_eg_grids.txt. You must have read privileges to the file or path and it must exist. Skipping this argument. 
ERROR: Cannot read .frm file from >.frm. 

Ausführung des Dienstprogramms: 'mysqlfrm --server = root @ localhost --port = 445 --user = root C: /wamp/bin/mysql/mysql5.6.17/data/craigmedia/wp_eg_grids.frm> wp_eg-grids.txt' endete mit Rückkehrcode '1' aber keine Fehlermeldung wurde zum Standardfehler gestreamt, bitte überprüfen Sie die Ausgabe von seiner Ausführung.

Dann habe ich das versucht.

2. mysqlfrm [email protected]:3306 c:/wamp/bin/mysql/mysql5.6.17/data/craigmedia/wp_eg_grids.frm --port=3307 --user=root 

WARNUNG: Die Verwendung eines Kennworts in der Befehlszeilenschnittstelle kann unsicher sein.

Source on localhost: ...connected. 
Spawning server with --user=root. 
Starting the spawned server on port 3307 ... 

The console has detected that the utility 'mysqlfrm' ended with an error code. You can get more information about the error by running the console command 'show last error'. 

Execution of utility: 'mysqlfrm [email protected]:3306 c:/wamp/bin/mysql/mysql5.6.17/data/craigmedia/wp_eg_grids.frm --port=3307 --user=root' ended with return code '1' and with the following error message: 
Traceback <most recent call last>: 

File "G:\ade\build\sb_0-16088143-1438774726.78\Python-2.7.6-windows-x86-64bit\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module> 
File "scripts\mysqlfrm.py", line 422, in <module> 
File ".\mysql\utilities\command\read_frm.py", line 439, in read_frm_files 
File ".\mysql\utilities\command\read_frm.py", line 166, in _spawn_server 
File ".\mysql\utilities\command\serverclone.py", line 180, in clone_server 
File ".\mysql\utilities\command\tools.py", line 254, in get_mysqld_version 

I0Error: [Errno 13] Permission denied: 'version_check' 

Im Moment versuche ich ein FRM zugreifen zu testen, was die wp_eg_grids.frm ist und es in eine wp_eg_grids.txt zu machen. Kann irgendjemand merken, was ich falsch mache oder weiß, wie ich das bitte lösen soll?

+0

etwas Glück dabei? – AlphaMale

+0

Das selbe Problem jetzt für eine Weile. Etwas Glück? – pfinferno

+0

Hey nein, hatte kein Glück, ich am Ende meine Website neu zu machen. –

Antwort

3

Verwenden Sie die folgende Syntax für mysqlfrm es hatte für mich in einer ähnlichen Situation funktioniert.

mysqlfrm --server=root:[email protected]:3306 c:/wamp/bin/mysql/mysql5.6.17/data/craigmedia/wp_eg_grids.frm > c:/wamp/bin/mysql/mysql5.6.17/data/craigmedia/wp_eg_grids.txt --diagnostic --port=3307 -vvv --user=root 

Turn on diagnostic mode to read .frm files byte-by-byte and generate best-effort CREATE statement.

+0

stellen Sie sicher, dass Sie als Administrator ausgeführt werden – tsukimi

0

Ihr Problem kann ähnlich wie mir sein: MySQL gelaicht Server nicht gestartet. Das Problem liegt in MySQL beginnend mit einer temporären datadir, die standardmäßig das aktuelle Verzeichnis ist. In diesem Verzeichnis haben Sie ein neues temporäres Verzeichnis (etwa 62a77962-9a4b-49d0-b91a-a5e9eb71b894) mit den richtigen Berechtigungen.

  • Linux: Wenn Sie als root ausführen (der Benutzer mysqlfrm ausgeführt wird, nicht der Benutzer, den Sie MySQL gegen Start), Sie höchstwahrscheinlich im /root/ Verzeichnis sind, die mysql Systembenutzer nicht (auch wenn die mysql lesen Benutzer ist root).
  • Windows: das gleiche Problem Ich denke, wenn Sie als Administrator ausführen, hat der MySQL-Benutzer möglicherweise nicht die Rechte, das aktuelle Verzeichnis zu lesen.

Die Lösung ist (mit cd) in einem MySQL-lesbaren Verzeichnis, wie /tmp/ auf Linux zu bewegen (mit allen Sicherheitsfragen im Zusammenhang mit diesem world readable Verzeichnis) oder vielleicht C:\ unter Windows.

Ich fand es durch einen Blick auf MySQL log (Linux: /var/log/mysql/mysql.log), die erklärte:

/usr/sbin/mysqld: Can't change dir to '/root/aa9fe487-0c77-4bb4-a829-036fc9919558/' (Errcode: 13 - Permission denied)

Start-Befehl war:

/usr/sbin/mysqld --no-defaults --basedir=/usr --datadir=/root/aa9fe487-0c77-4bb4-a829-036fc9919558 --pid-file=/root/aa9fe487-0c77-4bb4-a829-036fc9919558/clone.pid --port=3310 --server-id=101 --socket=/root/aa9fe487-0c77-4bb4-a829-036fc9919558/mysql.sock --tmpdir=/root/aa9fe487-0c77-4bb4-a829-036fc9919558 --user=mysql

Umzug in /tmp/ das Problem behoben, und mysqlfrm hat wie erwartet funktioniert.

ich hätte eine tmpdir Option, wenn verfügbar verwendet, aber es ist nicht, wie in read_frm.py angegeben:

# Since Python libraries correctly restrict temporary folders to 
# the user who runs the script and /tmp is protected on some 
# platforms, we must create the folder in the current folder 
    temp_datadir = os.path.join(os.getcwd(), str(uuid.uuid4())) 
    os.mkdir(temp_datadir) 

Und MySQL hat kein richtiges Zuhause ... oder Sie Vielleicht wollen Sie nicht mit dem /var/lib/mysql/ Verzeichnis durcheinander kommen!