itsource

MySQL foreign_key_checks는 데이터베이스 전체에 영향을 미칩니까?

mycopycode 2022. 11. 14. 21:41
반응형

MySQL foreign_key_checks는 데이터베이스 전체에 영향을 미칩니까?

MySQL에서 다음 명령을 실행할 때:

SET FOREIGN_KEY_CHECKS=0;

엔진 전체에 영향을 미칩니까? 아니면 현재 거래만 해당되나요?

세션 기반이며, 질문에서 설정한 방법을 사용합니다.

https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html

이거에 따르면FOREIGN_KEY_CHECKS스코프의 경우는 「Both」입니다.즉, 세션용으로 설정할 수 있습니다.

SET FOREIGN_KEY_CHECKS=0;

또는 글로벌하게:

SET GLOBAL FOREIGN_KEY_CHECKS=0;

사실 두 개 있어요.foreign_key_checks변수: 글로벌 변수 및 로컬(세션 단위) 변수.연결 시 세션 변수는 글로벌 변수 값으로 초기화됩니다.
명령어SET foreign_key_checks는 세션 변수를 변경합니다.
글로벌 변수를 수정하려면SET GLOBAL foreign_key_checks또는SET @@global.foreign_key_checks.

다음의 메뉴얼 섹션을 참조해 주세요.
http://dev.mysql.com/doc/refman/5.7/en/using-system-variables.html
http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html

Ron이 설명한 바와 같이 로컬과 글로벌의 두 가지 변수가 있습니다.로컬 변수는 항상 사용되며 연결 시 글로벌 변수와 동일합니다.

SET FOREIGN_KEY_CHECKS=0;
SET GLOBAL FOREIGN_KEY_CHECKS=0;

SHOW Variables WHERE Variable_name='foreign_key_checks'; # always shows local variable

GLOBAL 변수를 설정할 때 로컬 변수는 기존 연결에 대해 변경되지 않습니다.로컬 변수도 다시 연결하거나 설정해야 합니다.

MYSQL은 FORENT_KEY_CHECKS가 다시 활성화 되어도 외부 키를 적용하지 않습니다.이것에 의해, 외부 키와 체크가 온이 되어 있어도, 일관성이 없는 데이타베이스를 작성할 수 있습니다.

외부 키의 일관성을 유지하려면 체크 온 상태에서 키를 추가해야 합니다.

# will get you the current local (session based) state.
SHOW Variables WHERE Variable_name='foreign_key_checks';

SET GLOBAL을 설정하지 않으면 세션만 영향을 받습니다.

Drupal 데이터베이스를 새로운 로컬 아파치 서버로 이행하려고 할 때 같은 오류가 발생했습니다(Windows 머신에서 XAMPP를 사용하고 있습니다).사실 이 오류의 의미를 잘 모르지만, 아래 단계를 거쳐 오류 없이 데이터베이스를 Import했습니다.도움이 되었으면 합니다.

C:\xampp\php\php.ini에서의 php.ini 변경

max_execution_time = 600
max_input_time = 600
memory_limit = 1024M
post_max_size = 1024M

C:\xampp\mysql\bin\my에서 my.ini를 변경합니다.ini

max_allowed_packet = 1024M

Mysql 쿼리 브라우저를 사용하는 경우,SET FOREIGN_KEY_CHECKS=0;는 버전 1.1.20에서는 영향을 주지 않습니다.단, Mysql 쿼리 브라우저 1.2.17에서는 정상적으로 동작합니다.

언급URL : https://stackoverflow.com/questions/8538636/does-mysql-foreign-key-checks-affect-the-entire-database

반응형