2013-07-29 3 views
19

'가져 오기 전에 테이블 폐기 처리 해주 십시요'을 (MySQL의 버전 5.1.66) databasename '테이블 테이블 : 라인 25 ERROR 1813 (HY000) : 내 개발 컴퓨터에 해당 데이터베이스 (MySQL 버전 5.6.12)mysqldump는 문제 : 나는 프로덕션 데이터베이스의 일일 백업 mysqldump는 백업을 실행

mysql --user=username --password=secret databasename < file 

가 나는 오류가 발생합니다. tablename '이 존재합니다. 가져 오기 전에 테이블 공간을 취소하십시오. MySQL의 InnoDB의 데이터베이스 명령이 필요하기 때문에 내 읽는이를 나타냅니다

입니다 : 테이블이 삭제되기 전에

ALTER TABLE tbl_name DISCARD TABLESPACE; 

실행할 수를 - 테이블을 삭제하는 것은 제거하기에 충분하지 않습니다 보인다는 색인. (내 개발 서버는 innodb_file_per_table 옵션을 사용합니다)

프로덕션 데이터베이스에서 삭제 된 개발 데이터베이스에 잠재적으로 데이터가있을 수 있기 때문에 '바꾸기'옵션을 사용하고 싶지 않습니다.

btw 오류가 발생하면 테이블을 읽을 수 없지만 mysqld를 다시 시작하면 오류가 수정됩니다.

질문 : 그렇다면이 문제를 해결하는 데 도움이되는 mysql 덤프 옵션이 있습니까? 아니면 오류를 방지하는 데이터를 가져 오는 다른 방법이 있습니까?

미리 읽어 주셔서 감사합니다.

답변

38

tablename.ibd가 있지만 tablename.frm이없는 것 같습니다.

확인하려면 다음 MySQL의 데이터 디렉토리 데이터베이스 이름에

  1. CD를.
    cd /var/lib/mysql/database_name
  2. 오류를 발생시키는 테이블 이름을 검색하십시오.

    ls tablename.*

    당신은 두 개의 파일이 표시되어야합니다

     
    tablename.ibd 
    tablename.frm 
    

    을하지만 난 그렇게하지 만 당신은 몇 가지 옵션이 해결하려면

    tablename.ibd

참조 같은데요 :

  1. 다음을 mysqldump에 추가하면 d 복원하기 전에 데이터 디렉토리를 정리하는 atabase.
    --add-drop-database
  2. prod에서 dev로 tablename.frm을 복사 한 다음 delete table 문을 실행하십시오. 또한

:

  • 당신은 로컬 호스트의 파일에 덤프 할 때 = 5000 net_buffer_length 사용할 필요가 없습니다.
  • 다른 백업 솔루션 - 스키마를 삭제하고 다시 만드는 동안 Percona Xtrabackup
+0

대단히 감사합니다. 데이터베이스 추가 명령을 추가하지 않았기 때문에 --add-drop-database --dataabases 을 추가했습니다. – pgee70

+1

tablename.frm을 복사 한 후 파일에 적절한 사용 권한이 있는지 확인하십시오. 사용자 : mysql에서 액세스 할 수있는 그룹. – NEB

3

나는 또한 문제가 발생했습니다. C:\ProgramData\MySQL\MySQL Server 5.6\data\my_database_name으로 이동하여 이전 데이터베이스 생성에서 남은 테이블을 삭제하여이 문제를 극복했습니다. 원하는 경우 전체 데이터베이스를 삭제할 수도 있습니다.

0

XAMPP를 사용하는 경우 가장 먼저 "중지"하십시오. 그런 다음 C : \ xampp \ mysql \ data \ dnb 으로 이동하십시오. 여기서 제 경우에는 dnb가 데이터베이스 이름 폴더입니다. 그런 다음 .ibd 파일을 열고 삭제하십시오. 따라서 이미 MYSQL을 중지 할 때만 삭제할 수 있습니다. 다음 phpmyadmin 로 이동하십시오. 1 phpmyadmin을 클릭하십시오. 아래에 표시된 데이터베이스를 클릭하십시오 (server.127.0.0.1이 내 경우 변경됨). 3 삭제할 데이터베이스를 선택하고 drop을 클릭하십시오. 4 이름이 같은 데이터베이스를 만들고 데이터베이스를 성공적으로 가져올 수 있습니다. here you can see how you drop database from phpmyadmin

6

이 문제를 건너 뛰는 가장 쉬운 방법은 phpmyadmin 데이터베이스 덤프를 수동으로 편집하고 문제가있는 테이블을 INNODB 이외의 것으로 편집/변경하는 것이 었습니다. 나는 문제 표를 ENGINE=MyISAM으로 바꿨다. 가져 오기가 작동했습니다.

CREATE TABLE IF NOT EXISTS `home3_acymailing_tag` (
    `tagid` smallint(5) unsigned NOT NULL AUTO_INCREMENT, 
    `name` varchar(250) NOT NULL, 
    `userid` int(10) unsigned DEFAULT NULL, 
    PRIMARY KEY (`tagid`), 
    KEY `useridindex` (`userid`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 
+1

답을 다시 포맷하십시오. 여기에있는 모든 권장 사항 중 – aggsol

+0

이 나에게 도움이되는 해결책입니다. –