2015-09-18 2 views
6

Надеюсь, кто-то может мне помочь, я исследовал многие ответы на восстановление в stackoverflow.Проблемы с восстановлением файла .frm с использованием mysqlfrm

Я сделал ошибку при копировании папки данных из mysql и вставки ее в новую папку mysql/mysl5.6.17/data.

Когда я нажимаю на таблицу, она дает «таблица не существует». Это ниже показывает, что показ

3688 [Предупреждение] InnoDB: Не удается открыть таблицу craigmedia/wp_eg_grids из внутреннего словаря данных InnoDB, хотя файл .frm для таблицы существует. См. http://dev.mysql.com/doc/refman/5.6/en/innodb troubleshooting.html, как вы можете решить проблему.

У меня есть папка с базой данных, содержащая файлы .frm.

Я пытался использовать mysqlfrm восстановить таблицу, как описано по ссылке: https://dba.stackexchange.com/questions/71596/restoring-mysql-tables-from-ibd-frm-and-mysqllogbin-files

Однако, когда я помещал информацию в mysqlfrm результаты показаны ниже:

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. 

Выполнение утилиты: 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 ' закончился кодом возврата '1', но сообщение об ошибке не было передано стандартной ошибке, пожалуйста, просмотрите вывод из его выполнения.

Тогда я попробовал это.

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

ВНИМАНИЕ: Использование пароля в интерфейсе командной строки может быть небезопасным.

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' 

На данный момент я пытаюсь получить доступ к одной .frm, чтобы проверить, что является wp_eg_grids.frm и превратить его в wp_eg_grids.txt. Кто-нибудь может заметить, что я делаю неправильно или знаю, как это решить.

+0

любая удача с этим? – AlphaMale

+0

Имея ту же проблему на некоторое время. При удаче? – pfinferno

+0

Эй, нет, не повезло, я в конечном итоге переделываю свой сайт. –

ответ

3

Попробуйте использовать следующий синтаксис для mysqlfrm, который сработал для меня в аналогичной ситуации.

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

убедитесь, что вы запускаете ее как admin – tsukimi

0

Ваш вопрос может быть похож на мой: MySQL порождал сервер не запускается.

Проблема заключается в MySQL, начиная с временного datadir, который по умолчанию является текущим каталогом. В этом каталоге у вас будет новый временный каталог (что-то вроде 62a77962-9a4b-49d0-b91a-a5e9eb71b894) с правильными разрешениями.

  • Linux: если вы работаете как корень (пользователь работает mysqlfrm, а не пользователь запуске MySQL против), то, скорее всего, находятся в каталоге /root/, который mysql системы пользователь не может читать (даже если MySQL пользователь root).
  • Windows: такая же проблема. Я думаю, если вы запустите как администратор, у пользователя MySQL может не быть прав на чтение текущего каталога.

Решение заключается в перемещении (с помощью cd) в читаемом каталоге MySQL, такие как /tmp/ на Linux (все вопросы безопасности, связанные с этим world readable каталога), или, возможно, C:\ на Windows.

Я нашел его, глядя на журнал MySQL (Linux: /var/log/mysql/mysql.log) в котором говорилось: команда

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

Старт был:

/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

заселение /tmp/ исправили проблему, и mysqlfrm работал должным образом.

я бы использовал tmpdir вариант, если таковые существуют, но это не так, как указано в 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) 

И MySQL не настоящий дом ... или может не захотеть возиться с каталогом /var/lib/mysql/!

Смежные вопросы