2012-12-18 9 views
3

여기에서 중복에 대한 사과를 전합니다.하지만 조사를 해 보았으며 (그 과정에서 많은 것을 배웠습니다). 덤프 파일에서 데이터베이스를 복원 할 때 sql 오류를 기록하는 방법

환경

이 작업은 MySQL의 4.0에서 덤프 된 데이터베이스를 복원하는 것입니다 윈도우 7

에 MyISAM 테이블 엔진을 사용하여 MySQL은 5.5입니다. 명령 줄에서이 작업을 수행합니다 (오라클의 MySQL Workbench 가져 오기 유틸리티를 사용해 보았지만 오류가 발생하면 실패합니다). 복원이 완료되었지만 오류가 발생한다는 것을 알고 있습니다. 복원을 오류없이 완료 할 수 있도록 캡처 할 수 있습니다.

General_log는 아무것도 캡처하지 않는 것 (예 - 켜짐)입니다. 다른 로그 파일 (local_host_name.log)은 SQL 문 수준 오류를 전혀 캡처하지 않는 것 같습니다.

명령 줄에서 복원 할 때 오류를 캡처하는 방법이 있습니까? 로그 파일에 오류를 기록하는 throw/catch 문으로 덤프 파일 자체를 편집하는 방법이 있습니까?

미리 감사드립니다 - 나는 MySQL에 새로운 브랜드의 MS SQL 사람입니다. 프롬프트에서

+0

명령 줄을 통해 가져 오기를 실행하는 경우 --verbose 명령을 사용하여 다시 실행하려고합니다. 이렇게하면 오류를 포함하여 가져올 때 더 많은 정보가 화면에 인쇄됩니다. http://dev.mysql.com/doc/refman/5.5/en/mysql-command-options.html#option_mysql_verbose – Scott

+0

나는 그 사진을 줄 것이다 - 문제는 덤프 파일에 수천 개의 문장이 들어있다. Windows 명령 행은 모든 행을 표시하지 않습니다. – Rob

+0

'>'을 사용하여 출력을 파일로 재지 정할 수 있습니다. ie "mysql -u asdf -Ppass -h localhost databasename < dump.sql > errors.txt" – Scott

답변

1

@ 롭은 CMD (?) 같은 것을 시도 :

mysql -u your_user your_database <c:\path\to\your_script.sql >stdout_output.txt 2>stderr_output.txt 

꺾쇠 괄호, 명령 행 쉘의 상징 '<'와 '>'입니다 리디렉션 신호가되지 않습니다.

내가 MySQL의 TB 데이터베이스를 복원하고 아래 그림과 같이 같은 파일에 출력을 기록하는 bash는 스크립트를 사용하여
+0

답변 주셔서 감사합니다 - 나는 tee 명령을 사용하여 파일에 출력을 쓸 수있었습니다. 당신이 제안하는 구문을 시도하면 프롬프트와 함께 개행 문자가 생기지 만 명령은 실제로 실행되지 않습니다. 죄송합니다. 뭔가 분명하지 않습니다. – Rob

+0

문제가 해결되었습니다. 이 프롬프트 표시는 이상합니다. 보통 세미 쉼표가없는 경우 mysql이 그것을 인쇄합니다. 명령을 실행할 때 stderr_output.txt에 출력이 있습니까? –

0

,

/bin/bash /home/installation/scripts/finqa_restore.sh 2>&1 | tee /home/installation/scripts/output-stat.txt 
0

이 나를 위해 일한 : 내가 가진

pv import_test.sql | mysql -urootuser -pyourpassword the_db_name >st_out_log.txt 2>error_log.txt 

한 가지 문제는 그것은 단지 하나의 오류를 포착하는 것 같습니다. 아마도 스크립트가 오류가 발생한 후에 실행을 멈추었을 것입니다.

관련 문제