외부 키 제약을 적용하지 않는 mysqldump 파일을 자동으로 만들 수 있습니까?
데이터베이스에서 mysqldump 명령을 실행한 후 Import를 시도하면 테이블이 알파벳 순으로 작성되기 때문에 실패합니다.다만 파일 뒷부분에서 테이블을 참조하는 외부 키가 있을 수 있습니다.문서에는 아무것도 없는 것 같습니다.또, 다음과 같이 파일을 작성한 후에 파일을 갱신해 주세요.라고 하는 회답이 있습니다.
set FOREIGN_KEY_CHECKS = 0;
...original mysqldump file contents...
set FOREIGN_KEY_CHECKS = 1;
이러한 행을 자동으로 설정하거나 필요한 순서로 테이블을 내보낼 수 있는 방법은 없습니까(모든 테이블 이름을 수동으로 지정할 필요가 없습니다).이러한 경우 지루하고 오류가 발생하기 쉽습니다.이러한 행을 스크립트로 정리할 수는 있지만 파일을 덤프하고 수동으로 업데이트하지 않고 Import할 수 있는 쉬운 방법이 없을까요?
그mysqldump
기본적으로 버전 4.1.1부터 MySQL에 포함된 명령어를 사용하면 외부 키 검사를 해제하는 스크립트가 생성됩니다.덤프 파일의 맨 위에 다음 행이 포함됩니다.
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
그/*!40014 ... */
구문은 MySQL 버전 4.0.14 이후에 실행되는 조건부 주석입니다.이전 외부 키 검사 설정이 덤프 파일 끝에 복원됩니다.
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
조건부 코멘트는 (서버가 아닌) 클라이언트에 의해 해석됩니다.덤프 파일을 지원하지 않는 클라이언트에서 덤프 파일을 로드하면 외부 키 검사가 비활성화되지 않고 오류가 발생할 수 있습니다.최상의 결과를 얻으려면 mysql 공식 명령줄 클라이언트를 사용하여 덤프 파일을 로드하는 것이 좋습니다.
mysql -hserver -uuser -p database < dumpfile.sql
또한 주의할 필요가 있습니다.mysqldump
옵션과 함께 실행됩니다.그러면 외부 키체크를 디세블로 하고 다시 이노블로 하는 명령어는 덤프 파일에서 생략됩니다.
주의하세요. mysqldump는 --sysqldump 옵션을 사용할 경우 FORENAR_KEY_CHECKS=0을 쓰지 않습니다.
안녕히 계세요.
SQL을 내보낼 때 phpMyAdmin을 사용하는 경우 Custom Export Method를 선택합니다.그런 다음 확인란 옵션 중에서 "외부 키 검사 사용 안 함"을 클릭합니다.내보낸 SQL 문에는 출력 파일의 시작 부분과 끝에 각각 disable 및 enable 외부 키 검사가 있습니다.
"자동"은 아니지만 모든 내보내기에 대해 사용자가 직접 명세서를 작성할 필요는 없습니다.
수 .--compact
의 한 mysqldump
명령어를 입력합니다. --compact
--skip-comments
대신 '그냥'--compact
--skip-add-drop-table --skip-add-locks --skip-disable-keys --skip-set-charset
하세요.mysql
령어,, 문문문다다다다다★★★★
% mysqldump -u ocp6 -pocp6 ocp6 --single-transaction --result-file=dump.sql
복원:
% mysql -u ocp6 -pocp6 ocp6 < dump.sql
다 좋습니다.
다른 MySQL 클라이언트(내 상황에서는 mycli)를 사용하여 덤프 파일을 복원하는 경우:
mysql ocp6@:(none)> \. dump.sql
[…]
(1005, 'Can\'t create table `ocp6`.`composition` (errno: 150 "Foreign key constraint is incorrectly formed")')
mycli는 조건부 코멘트를 이해하지 못할 것으로 생각됩니다.
를 사용합니다.--single-transaction
한 번의 트랜잭션으로 모든 것을 할 수 있습니다.한 형식의 것을 할 수 없습니다.Foreign key constraint
모든 트랜잭션에서 오류가 발생하면 쿼리 실행이 중지됩니다. 것은, 「중략」을 입니다.Foreign key constraint
이치노
MySQL WorkBench를 사용하는 방법이 효과적이었습니다.
먼저 DB를 모델로 리버스했습니다.그런 다음 모델 탭을 열고 EXPORT -> Forward-engineer SQL Create Script 옵션을 사용했습니다.FK 구속조건 및 FK 인덱스를 내보낼지 여부를 선택할 수 있는 대화 상자가 나타납니다.
사용한 MySQL Workbench 버전은 버전 8.0.29입니다.이전 버전에서는 지원되어야 하는데, 시도해 볼 때까지 잘 모르기 때문에 이전 버전을 사용하시는 경우 주행거리가 달라질 수 있습니다.
언급URL : https://stackoverflow.com/questions/2429655/can-you-automatically-create-a-mysqldump-file-that-doesnt-enforce-foreign-key-c
'programing' 카테고리의 다른 글
클래스 파일에 잘못된 버전 52.0이 있습니다. 50.0이어야 합니다. (0) | 2022.09.24 |
---|---|
"throw new Error"와 "throw some Object"의 차이점은 무엇입니까? (0) | 2022.09.24 |
AWS SDK for PHP: 인스턴스 프로파일 메타데이터 서버에서 자격 증명을 검색하는 동안 오류가 발생했습니다. (0) | 2022.09.24 |
문자 집합과 대조는 정확히 무엇을 의미합니까? (0) | 2022.09.24 |
Twitter API 버전 1.1에서 user_timeline을 검색하는 가장 간단한 PHP 예제 (0) | 2022.09.24 |