명령줄에서 외부 키 검사 비활성화
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;" ...
이 작업은 문자열을 파일에 인라인으로 연결하여 수행할 수 있습니다.문자열과 파일을 연결할 수 있는 더 쉬운 방법이 있을 거라고 확신하지만, 효과가 있어요.
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
'programing' 카테고리의 다른 글
JavaScript를 사용하여 요소까지 스크롤하려면 어떻게 해야 합니까? (0) | 2022.09.21 |
---|---|
Node.js 스트림의 내용을 문자열 변수로 읽으려면 어떻게 해야 합니까? (0) | 2022.09.21 |
Python에서 오브젝트의 크기를 확인하는 방법은 무엇입니까? (0) | 2022.09.21 |
flake8이 필터 절의 부울 비교 "=="에 대해 불만을 제기합니다. (0) | 2022.09.21 |
Java의 AbstractList의 removeRange() 메서드가 보호되는 이유는 무엇입니까? (0) | 2022.09.21 |