, 다음을 수행 할 수 있습니다 InnoDB 테이블의 경우
CHECK TABLE <table_name>;
REPAIR TABLE <table_name>;
:
http://www.mysqlperformanceblog.com/2008/07/04/recovering-innodb-table-corruption/
나 'MyISAM 테이블의 경우
CHECK와 REPAIR이 감지하고 수정할 수있는 몇 가지 드문 경우에 MyISAM 테이블을 개인적으로 손상된 것으로 보았습니다. 필자는 InnoDB 테이블에 대한 손상을 경험 한 적이 없으므로 링크에 제공된 정보와 관련하여 개인적인 경험을 말할 수는 없습니다.
내가 신발에 앉아 있다면 mysqldump가 출력 파일을 자세히 살펴 봄으로써 오류의 출처를 정확히 찾아 낼 수 있는지 알아 보겠다. mysqldump는 보통 한 줄에 모든 데이터가있는 테이블 당 하나의 INSERT 문을 출력하므로 오류 메시지에 포함 된 줄 번호가별로 도움이되지 않기 때문에 오류를 진단하는 것은 다소 까다 롭습니다. 그래서, 나는 mysqldump 출력 파일을 편집하고 각 행 사이에 개행 문자를 삽입한다.
원본 : :
INSERT INTO table VALUES (a,b,c),(d,e,f),(g,h,i), ...
변경하려면 : 예를 들어 명령 행에 익숙해있어 이후
INSERT INTO table VALUES (a,b,c),
(d,e,f),
(g,h,i),
...
, 당신은 아마 등, SED와이를 자동화 할 수
그런 다음 수정 된 파일을 가져 오십시오. 동일한 오류가 발생하지만 이번에는 문제의 원인이되는 행을 정확히 찾아내는 데 도움이됩니다. 그 시점에서 문제를 진단 할 수 있어야합니다 (또는 mysqldump 출력 부분을 게시하면 도움을 얻을 수 있습니다).
편집 :
당신이 인용 오류 메시지가 일어나는 때 수입 데이터베이스? 또는 데이터베이스를 성공적으로 가져올 수 있지만 데이터베이스에 액세스 할 때 응용 프로그램에서 오류 메시지를 생성합니까? 나는 이전을 추측하고 있었지만 이제는 질문을 다시 읽은 후 후자가 될 것이라고 생각합니다.
또 하나의 아이디어 : 데이터베이스에 저장된 procs가 포함되어 있습니까? 그렇다면, mysqldump는 기본적으로 mysqldump를 포함하지 않을 것이다. 당신은 --routines에게 옵션을 사용해야합니다
mysqldump --routines -u <user> -p<password> <database> > output
테이블 user_register가 아니고, 삽입하려는 데이터가 직렬화 된 것 같습니다. 이것을 삽입 해보십시오. –
어떻게 백업을 생성합니까? 예를 들어, mysqldump, MySQL 관리자 등을 사용하고 있습니까? mysqldump를 사용하여 동일한 오류가 발생하는지 확인하십시오. – cbranch
@Haim : 어떻게 오류를 없앨 수 있습니까? – qliq