2015-09-18 18 views
6

Speriamo che qualcuno possa aiutarmi, ho studiato molte delle risposte di recupero su StackOverflow.Problemi nel recupero di un file .frm usando mysqlfrm

Ho fatto l'errore di copiare la cartella dei dati da mysql e incollarla nella nuova cartella wamp 2.5 mysql/mysl5.6.17/data.

Quando faccio clic su un tavolo, "tabella non esiste". Ciò che segue mostra la cosa sta mostrando

3688 InnoDB [Warning]: Impossibile aprire la tabella craigmedia/wp_eg_grids dal dizionario di dati interna di InnoDB se il file esiste .frm per la tabella. Vedere http://dev.mysql.com/doc/refman/5.6/en/innodb troubleshooting.html per come è possibile risolvere il problema.

Ho la mia cartella di database che contiene i file .frm.

Ho cercato di usare mysqlfrm di recuperare il tavolo, come spiegato da questo link: https://dba.stackexchange.com/questions/71596/restoring-mysql-tables-from-ibd-frm-and-mysqllogbin-files

Tuttavia quando ho messo le informazioni nel mysqlfrm i risultati sono al di sotto di spettacolo:

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. 

Esecuzione dell'utilità: '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' terminato con il codice di ritorno '1' ma nessun messaggio di errore è stato trasmesso in streaming all'errore standard, si prega di rivedere l'output dalla sua esecuzione.

Quindi ho provato questo.

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

ATTENZIONE: l'utilizzo di una password sull'interfaccia della riga di comando può essere non sicuro.

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' 

Al momento sto cercando di accedere a uno .frm alla prova, che è il wp_eg_grids.frm e farne un wp_eg_grids.txt. Qualcuno può notare cosa sto facendo male o sapere come risolvere questo per favore.

+0

sfortuna con questo? – AlphaMale

+0

Avendo lo stesso problema per un po 'ora. Qualche fortuna? – pfinferno

+0

Ehi no, non ho avuto fortuna, ho finito per rifare il mio sito web. –

risposta

3

Provare a utilizzare la seguente sintassi per mysqlfrm che ha funzionato per me in una situazione simile.

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

assicurati di eseguirlo come amministratore – tsukimi

0

Il tuo problema potrebbe essere simile al mio: MySQL ha generato server non si avvia.

Il problema si trova in MySQL a partire da uno datadir temporaneo, che per impostazione predefinita è la directory corrente. In questa directory, avrai una nuova directory temporanea (qualcosa come 62a77962-9a4b-49d0-b91a-a5e9eb71b894), con le autorizzazioni corrette.

  • Linux: se si esegue come root (l'utente che esegue mysqlfrm, non l'utente che si avvia MySQL contro), è molto probabilmente di essere nella directory /root/, che mysql utente di sistema non può leggere (anche se il mysql l'utente è root).
  • Windows: lo stesso problema, se si esegue come amministratore, l'utente MySQL potrebbe non disporre dei diritti per leggere la directory corrente.

La soluzione è quella di spostare (utilizzando cd) in una directory leggibile MySQL, come ad esempio /tmp/ su Linux (con tutti i problemi di sicurezza associati a questa directory world readable), o forse C:\ su Windows.

l'ho trovato cercando in log di MySQL (Linux: /var/log/mysql/mysql.log) che ha dichiarato: comando

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

partenza è stata:

/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

Muoversi in /tmp/ risolto il problema, e mysqlfrm ha funzionato come previsto.

avrei usato un'opzione tmpdir, se disponibile, ma non è, come indicato nel read_frm.py:

# 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) 

e MySQL non ha una vera casa ... o potrebbe non voler scherzare con la directory /var/lib/mysql/!

Problemi correlati