programing

명령줄에서 외부 키 검사 비활성화

itsource 2022. 9. 21. 22:12
반응형

명령줄에서 외부 키 검사 비활성화

MySQL 데이터베이스용 백업스크립트가 있는데mysqldump와 함께--tab옵션을 생성하도록 합니다..sql구조물과 a를 신청하다.txt파일(파이프로 구분)을 지정합니다.

일부 테이블에는 외부 키가 있기 때문에 가져올 때 다음과 같은 오류가 발생합니다.

ERROR 1217 (23000) 행 8: 부모 행을 삭제 또는 업데이트할 수 없음: 외부 키 제약에 실패함

사용법을 알고 있습니다.SET FOREIGN_KEY_CHECKS=0(그리고SET FOREIGN_KEY_CHECKS=1나중에)를 참조해 주세요).그것들을 각각에 더하면.sql파일 Import가 동작합니다.하지만 다음번엔 분명히mysqldump덮어쓰게 됩니다.

또한 다음과 같이 별도의 명령으로 실행하려고 했지만 오류가 다시 나타납니다.

echo "SET FOREIGN_KEY_CHECKS=0" | mysql [user/pass/database] 
[all the imports]
echo "SET FOREIGN_KEY_CHECKS=1" | mysql [user/pass/database] 

명령줄에서 FK 체크를 비활성화하는 다른 방법이 있습니까?

를 사용할 수도 있습니다.--init-command파라미터mysql명령어를 입력합니다.

예:mysql --init-command="SET SESSION FOREIGN_KEY_CHECKS=0;" ...

MySQL 5.5 문서 - mysql 옵션

이 작업은 문자열을 파일에 인라인으로 연결하여 수행할 수 있습니다.문자열과 파일을 연결할 수 있는 더 쉬운 방법이 있을 거라고 확신하지만, 효과가 있어요.

cat <(echo "SET FOREIGN_KEY_CHECKS=0;") imports.sql | mysql

한 세션이기 때문에 다시 1로 설정할 필요는 없을 것 같습니다.

mysql 명령줄 로그인:

mysql -u <username> -p -h <host_name or ip>그럼 달려라

1 SET FOREIGN_KEY_CHECKS=0;

2.use database <database_name>

3 SOURCE /pathToFile/backup.sql;

4 SET FOREIGN_KEY_CHECKS=1;

같은 일을 할 수 있는 또 다른 방법이 있습니다.

{ echo "SET FOREIGN_KEY_CHECKS=0;" ; cat imports.sql ; } | mysql

.gz 파일을 사용하는 다른 방법:

gunzip < backup.sql.gz | mysql --init-command="SET SESSION FOREIGN_KEY_CHECKS=0;" -u <username> -p

코멘트와 답변을 바탕으로 InnoDB와 MyISAM을 모두 사용하여 압축된 데이터베이스를 Import할 수 있게 되었습니다.

{ echo "SET FOREIGN_KEY_CHECKS=0;SET UNIQUE_CHECKS=0;" ; zcat dump.gz ; } | mysql

cmd에서 다음과 같이 명령어를 호출할 수 있습니다.

mysql -e "SET SESSION FOREIGN_KEY_CHECKS=1;"

물론 -u, -p 및 -h를 사용하여 사용자 이름, 비밀번호 및 호스트를 지정해야 합니다.

언급URL : https://stackoverflow.com/questions/15938786/disabling-foreign-key-checks-on-the-command-line

반응형