한 번에 모든 테이블 복구
한 번에 데이터베이스의 모든 테이블을 확인하는 방법은 무엇입니까?
check table ''tablename'';
모든 테이블에 대한 쿼리 를 하나씩 입력하는 대신 .
이와 같은 간단한 명령 check all
이 있습니까?
명령 줄에서 다음을 사용할 수 있습니다.
mysqlcheck -A --auto-repair
http://dev.mysql.com/doc/refman/5.0/en/mysqlcheck.html
명령은 다음과 달라집니다.
mysqlcheck -u root -p --auto-repair --check --all-databases
요청시 비밀번호를 제공해야합니다.
일반 텍스트로 작성 권장하지 않습니다.
mysqlcheck -u root --password=THEPASSWORD --auto-repair --check --all-databases
다음 쿼리를 사용 REPAIR
하여 데이터베이스 내의 모든 테이블에 대한 SQL 통계 를 인쇄 합니다.
select concat('REPAIR TABLE ', table_name, ';') from information_schema.tables
where table_schema='mydatabase';
그 후 모든 쿼리를 복사하고 mydatabase
.
참고 : mydatabase
원하는 DB 이름으로 교체
다음 명령은 Windows에서 명령 프롬프트 (관리자 권한)를 사용하여 저에게 딱 맞는.
mysqlcheck -u root -p -A --auto-repair
루트 사용자로 mysqlcheck를 실행하고, 암호를 입력하고, 모든 데이터베이스를 확인하고, 테이블을 자동 복구합니다.
암호를 입력 할 필요없이 다음 명령 중 하나만 사용하면됩니다 (자체 설명).
mysqlcheck --all-databases -a #analyze
mysqlcheck --all-databases -r #repair
mysqlcheck --all-databases -o #optimize
수행하는 기본 명령은 없지만 작업을 수행하는 프로 시저를 사용합니다. 행을 반복 하고 모든 행을 information_schema
호출 REPAIR TABLE 'tablename';
합니다. CHECK TABLE
준비된 명령문에는 아직 지원되지 않습니다. 다음은 예입니다 (MYDATABASE를 데이터베이스 이름으로 대체).
CREATE DEFINER = 'root'@'localhost'
PROCEDURE MYDATABASE.repair_all()
BEGIN
DECLARE endloop INT DEFAULT 0;
DECLARE tableName char(100);
DECLARE rCursor CURSOR FOR SELECT `TABLE_NAME` FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA`=DATABASE();
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET endloop=1;
OPEN rCursor;
FETCH rCursor INTO tableName;
WHILE endloop = 0 DO
SET @sql = CONCAT("REPAIR TABLE `", tableName, "`");
PREPARE statement FROM @sql;
EXECUTE statement;
FETCH rCursor INTO tableName;
END WHILE;
CLOSE rCursor;
END
쉘에서 간단한 확인을 위해 이것을 좋아합니다.
mysql -p<password> -D<database> -B -e "SHOW TABLES LIKE 'User%'" \
| awk 'NR != 1 {print "CHECK TABLE "$1";"}' \
| mysql -p<password> -D<database>
plesk 호스트의 경우 다음 중 하나를 수행해야합니다. (둘 다 동일하게 수행)
mysqlrepair -uadmin -p$(cat /etc/psa/.psa.shadow) -A
# or
mysqlcheck -uadmin -p$(cat /etc/psa/.psa.shadow) --repair -A
사용자 이름과 암호가 필요할 수 있습니다.
mysqlcheck -A --auto-repair -uroot -p
암호를 입력 한 메시지가 표시됩니다.
mysqlcheck -A --auto-repair -uroot -p{{password here}}
암호가 일반 텍스트로 표시됩니다!
존재하는 테이블이 남아있는 경우
mysqlcheck -A --auto-repair
시험
mysqlcheck -A --auto-repair --use-frm
참고 URL : https://stackoverflow.com/questions/4582832/repair-all-tables-in-one-go
'IT' 카테고리의 다른 글
사용자 메시지의 복수 (0) | 2020.08.09 |
---|---|
Scala에서 "컨텍스트 바인딩"이란 무엇입니까? (0) | 2020.08.09 |
ios9에서 stringByAddingPercentEscapesUsingEncoding을 대체할까요? (0) | 2020.08.09 |
사람이 읽을 수있는 방식으로 Java .class 파일을 열려면 어떻게해야합니까? (0) | 2020.08.09 |
Android 에뮬레이터 프록시 설정을 구성하는 방법 (0) | 2020.08.09 |