.Frm 파일 및. ibd만 사용할 수 있습니다 때 MySQL 테이블 복구

해결 하는 방법 “Mysql의 오류 #1146 -테이블에 존재 하지 않습니다.” .IDB 파일 이동으로 인 한 (InnoDB) 디렉터리 간에 직접 (테이블 스페이스).

logo_mysql

문제

우리가 있는 문제 많은 우리가 만든 문제. 난 그냥 WordPress를 사용 하 여 사이트를 설정 하 고 생각 했다: 이 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/사이트). 내가 그것이 효과가 있을 것을 확신 했다, 다른 시간 처럼.

PHP와 함께 새로운 WampServer를 설치 후 7, 백업 파일 및 응용 프로그램 다시, 나는 브라우저에서 테스트에 갔을 때만, 사이트를 표시 하지 않았다, 워드 프레스 설치 화면 하지만 새 사이트를 마치. 동결! PHPMyAdmin 열고 확인 데이터베이스 확인 했다 고 나는 보았다, 데이터베이스에 나열 되 고에 불구 하 고, 때 다음과 같은 오류 메시지가 데이터를 보려면 테이블 상단 클릭:

  MySQL 오류 #1146 -테이블 <TABLE_NAME> doesn ' t 존재

난 검색 되었습니다 그리고 난 그냥 발견 밖으로 수를 복사 또는 이동 파일 직접 다른 MySQL MySQL 디렉터리 경우 파일은 MyISAM 타입, frm 파일 확장명이 그. MYD입니다. MYI. 무슨 일이 있었는지 모르겠어요., 하지만 내 데이터베이스 InnoDB로 등장 (.frm 및. idb). 불행 하 게도, 사실 MySQL 문서 경고 후에:

  자유롭게 이동할 수 없습니다. .데이터베이스 디렉터리 간에 IBD 파일  MyISAM 테이블 파일 수 있습니다.. 
  데이터베이스 이름을 포함 하는 공유 InnoDB 테이블 스페이스에 저장 된 테이블 정의. 
  트랜잭션 Id와 로그 또한 데이터베이스 간에 다를 테이블 파일에 저장 된 시퀀스 번호.

솔루션

내가 몇 가지 간단한 솔루션을 할 수 있어, 하지만 유일 하 게 정말 나를 위해 일했다 여기 설명, 그것은 훨씬 더 복잡 한 것 같지만, 게시물에서 발견 “테이블 복원(s) MySQL 데이터베이스 frm 또는 ibd 파일 에서만 사용할 수 있는 경우에“.

하기 전에, 그러나, 지식의 제목, 기억 하는 이노 Db 관련 입력, MySQL 파일에서 가드 구조 및.frm ibd에 데이터. 충분 한 이론, 자 본론!

단계 1: .Frm 파일의 구조를 다시 만들

말했듯이, frm 들어 테이블 구조. 먼저 우리는 다음 데이터를 채우기 위해이 구조를 검색할 필요가. 이것을 할 수 있습니다 3 아래에서 설명 하는 다른 방법, 하지만 전에, 당신이 대해 뭔가 얘기 하자는 “Mysql 유틸리티”.

Mysql 유틸리티 | mysqlfrm

제안 하는 첫 번째 메서드를 사용 하려는 경우 (온라인) 그래서 당신이 도구를 사용 해야 “mysqlfrm” 에 의해 제공 되는 “Mysql 유틸리티“.

이 도구는 데이터 구조를 추출 하 고 테이블 생성 SQL 스크립트 생성. 이 대 한, 다운로드 “Mysql 유틸리티” (mysql-유틸리티-1.6.4-winx64.msi 같은 것) 그것을 설치 하 고.

콘솔을 열려면 (명령 / 의는) CD 명령을 사용 하 여 기본 설치 디렉터리를 이동 하 고 (C 같은 것:\C:program FilesMySQLMySQL 유틸리티 1.6\). 거기에이 디렉터리에서 실행 파일은 mysqlfrm.exe.

  CD "C:\C:Program FilesMySQLMySQL 유틸리티 1.6"

.Frm 파일에 포함 된 테이블 구조를 추출만 아래 방법 중 하나를 선택합니다:

1▶ 메서드 | 온라인

1. 웹 사이트로 이동 HTTPS://recovery.twindb.com/;
2. 메뉴에서 클릭 “구조를 복구” 그리고에 “frm 파일에서 합니다.“;
3. 버튼을 클릭합니다 “브라우저…” frm 파일을 선택 하 고; 그리고
4. 버튼을 클릭합니다 “업로드” 테이블 생성 스크립트는 화면에 표시 됩니다..

그것은 한 번 생성 하는 모든 테이블을 하나의 스크립트를 여러 파일 frm을 보낼 수. 전에 모든.frm 가진.zip을 만들 수 있도록 그냥 “브라우저/업로드”.

2▶ 메서드 | 사용 하 여 –진단

/* 일반 예제 */
   mysqlfrm-진단 "<소스/경로>/mytable.frm" > "<destination/path/recovered_mytable.sql>"
 
/* 워드 프레스의 wp_posts.frm 테이블 연습 예제 */
   mysqlfrm --진단 "C:\wampbinmysqlmysql5.6.17datameubancowp_posts.frm" > "C:\recovered_wp_posts.sql"

3▶ 메서드 | 사용 하 여 –서버

/* 일반 예제 */
  mysqlfrm-서버=루트:mypassword@localhost 포트=3311 "<소스/경로>/mytable.frm" > "<목적지/경로>/recovered_mytable.sql"
 
/* 워드 프레스의 wp_posts.frm 테이블 연습 예제 */
  mysqlfrm --서버=루트@로컬 호스트 --포트=3307 ""(C):\wampbinMySQL\MySQL5.6.17\datameubancowp_posts.frm" > "(C):\recovered_wp_posts.SQL"

MySQL 포트를 사용 하지 마십시오! 선택 다른 사용 가능한. 참고가 명령은 지정된 된 경로에 저장 되는.SQL 파일에 출력을 리디렉션합니다 (경우에, (C):).

단계 2: 데이터베이스에 테이블을 다시 만들

새 데이터베이스에서, 단계에서 생성 된 스크립트는 테이블 만들기 1. 나 개인적으로 WampServer의 클린 버전을 설치 하 고 PHPMyAdmin을 사용 (http://localhost/phpmyadmin /) 데이터베이스를 만들고 가져올 단계에서 만든 SQL 스크립트 1 (recovered_wp_posts.sql). 이 스크립트를 만들 것입니다. 2 MySQL 데이터베이스의 디렉터리에 있는 파일:

  SUA_TABELA.frm SUA_TABELA.IDB

내 경우에, 이 파일에서 만든 (C):\wamp64binmysqlmysql5.7.14data<내 자리>. IE, MySQL 설치에 대 한 모양과 디렉터리에 유의 날짜 당신의 데이터베이스와 두 개의 파일을 언급 한 것.

단계 3: 새로운.IDB 파일 제거

새로운.IDB 파일을 제거 하려면, 다음 SQL 명령을 실행합니다:

/* 일반 예제 */
  ALTER TABLE mytable 테이블 스페이스 삭제;
 
/* 워드 프레스의 wp_posts 테이블 연습 예제 */
  ALTER TABLE wp_posts 테이블 스페이스 삭제;

이 명령은 테이블 및 테이블 스페이스 간의 링크를 제거 합니다. (어디에 물리적으로 저장 된 데이터베이스 파일), .IDB 파일 제거.

단계 4: 오래 된.IDB 파일 복사

원래.IDB 파일 (데이터를 포함 하는) .IDB 단계에서 삭제 하는 장소에 복사 3. Ctrl + C 및 Ctrl + V를 사용 하거나 명령줄을 사용 하 여 자신을 죽 일.

단계 5: 테이블을 다시 활성화

단계에서 끊어진된 링크 3 다음 명령을 사용 하 여 복원 해야:

/* 일반 예제 */
  ALTER TABLE mytable 테이블 가져오기;
 
/* 워드 프레스의 wp_posts 테이블 연습 예제 */
  ALTER TABLE wp_posts 테이블 가져오기;

몇 가지 경고를 받을 경우 걱정 하지 마세요, 그러나, 것이 다음 오류를 표시 하는 일반적인 고장:

  #1808 - 스키마 불일치 (테이블에 ROW_TYPE_DYNAMIC 행 형식, .IBD 파일은 ROW_TYPE_COMPACT 행 형식입니다.)

이 경우에, 이로 인해 mysql 5.7.14와는 다르게 일이 (새로운 내용) Mysql 5.6.17에 비해 기본 테이블을 만듭니다. (오래 된), ROW_FORMAT 없이 = 콤팩트.

그래서, MySQL을 사용 하는 경우 > mysql 5.7.14 =, 하기만 하면 ROW_FORMAT 추가 테이블 생성의 정의에 소형 =.

  CREATE TABLE 'wp_posts' (. . .) 엔진=이노 Db ROW_FORMAT=컴팩트

기타 erros

Apenas 파라 deixar registrado, antes 드 obter sucesso na extração 데 생생하게.frm, tive alguns erros:

  # Localhost에 소스: ... 연결.
  # 포트에서 생성 된 서버 시작 3304 ... 중지 하는 동안 오류가 발생 했습니다 생성 된 서버 실패.  프로세스 id = 6648.
  오류: 산란 서버 작업이 실패 했습니다. 복제 서버 오류: 통신할 수 없습니다. 새로운 내용 인스턴스. 프로세스 id = 6648.. 진단 하기, 유틸리티를 다시 실행 하 고 사용 하 여--자세한 옵션 폰된 서버에서 메시지를 확인 하 고 오류를 수정 하 여 다음 유틸리티를 다시 실행.
  성공: PID와 프로세스 6648 (자식 프로세스의 PID 7264) 종료 되었습니다..
역 추적 (가장 최근의 마지막 전화):
  파일 "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'

아니 카 쏘 específico 할 WordPress, 아래 생성 하는 SQL을 생성 하는 스크립트를 제거 해야. frm, 모든 항목의 기본 ‘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

총 조회 수: 14927

10 에 대 한 의견 “.Frm 파일 및. ibd만 사용할 수 있습니다 때 MySQL 테이블 복구

  1. 로 드리고 고 말했다:

    O가 야 없었지만 quando aparecer 뒤 mensagem de erro: #1815 – 내부 오류. 테이블에 Lsn을 재설정할 수 없습니다. “내 자리”.”myTable”: 데이터 구조 손상.
    데이터의 삽입을 수동으로 실행할 수 있습니까? 이 작업을 수행 하는 방법?
    이후 이미 감사 합니다..

  2. 크리스티안 U 고 말했다:

    안녕하세요 테일러,

    어떻게이 오류를 해결 했 어:
    오류: 산란 서버 작업이 실패 했습니다. 복제 서버 오류: 새 인스턴스와 통신할 수 없습니다. 프로세스 id = 6648.. 진단 하기, 유틸리티를 다시 실행 하 고 사용 하는 –자세한 옵션 폰된 서버에서 메시지를 확인 하 고 오류를 수정 하 여 다음 유틸리티를 다시 실행.
    성공: PID와 프로세스 6648 (자식 프로세스의 PID 7264) 종료 되었습니다..

    난 같은 메시지와 수신 계속 don´t 알고 그것을 해결 하는 방법.

    감사

응답을 남기다

귀하의 이메일 주소가 게시 되지 것입니다. 필수 항목으로 표시 됩니다. *