집 >데이터 베이스 >MySQL 튜토리얼 >프로그램이 mysql에 연결할 수 없으면 어떻게 해야 합니까?
프로그램이 mysql에 연결할 수 없는 문제에 대한 해결책: 1. mysql 서비스가 정상인지 확인하고 네트워크 문제를 확인하기 위한 운영 및 유지 관리를 찾습니다. 2. "max_allowed_packet" 값을 늘립니다. "net_read_timeout" 값, 4. "connect_timeout" 값 등을 늘립니다.
권장 사항: "mysql 비디오 튜토리얼"
프로그램이 mysql에 연결할 수 없을 때의 문제 요약
프로그램이 mysql에 연결할 수 없는 경우 일반적으로 네 가지 유형의 오류 보고서가 있습니다.
1:Can't connect to MySQL server 2:Lost connection to MySQL server 3:Sorry, due to line fault, temporarily unable to browse, we are dealing with. 4:MySQL server has gone away
하나: MySQL 서버에 연결할 수 없습니다.
가능한 이유:
1, mysql 서버가 시작되지 않았습니다.
2, 네트워크가 차단되었습니다(iptables, selinux, 네트워크 불안정)
해당 솔루션:
1, DBA는 먼저 mysql 서비스가 정상인지 판단합니다
2. mysql 서비스가 정상이라면 운영 및 유지보수 담당자에게 연락하여 네트워크 문제를 확인하시기 바랍니다
2: MySQL 서버 연결이 끊겼습니다
이러한 상황이 발생할 수 있는 네 가지 상황이 있습니다. 오류:
1. 네트워크 문제
2, 쿼리 결과 집합이 너무 큽니다. 예를 들어 쿼리는 수백만 개의 결과를 반환해야 합니다
3. connect_timeout 설정 시간이 너무 짧습니다. 이러한 이유로 오류가 발생한 경우 SHOW GLOBAL STATUS LIKE 'Aborted_connects'를 사용하여 이 값이 증가했는지 확인할 수 있습니다.
4 쿼리에 blob 유형이 있어 한도를 초과합니다. max_allowed_packet 매개변수
다음 네 가지 상황에 대한 해당 솔루션:
1, 운영 및 유지 관리 모니터링 네트워크에 문제가 있는지 여부
2, net_read_timeout 값을 늘리세요
3, connect_timeout 값을 늘리세요
4, max_allowed_packet 값
Three: 죄송합니다. 라인 오류로 인해 일시적으로 탐색할 수 없어 처리 중입니다.
이 오류는 인터넷에서 mysql 기본 오류에 대한 유사한 정보를 찾지 못했습니다. 현재 세 가지 상황이 있습니다. 이런 종류의 오류가 발생하는 곳:
1. 네트워크에 문제가 있습니다.
2. 데이터베이스 연결이 너무 많습니다.
3. 데이터베이스에 연결된 계정이 잘못되었습니다.
4: MySQL 서버가 사라졌습니다. away
다음 12가지 상황에서 이 오류가 발생할 수 있습니다.
1. 기본 wait_timeout 값은 8시간입니다. 유휴 연결이 이 값을 초과하면 종료됩니다.
2. 클라이언트 계정을 수동으로 종료합니다. mysql_options(..., MYSQL_OPT_READ_TIMEOUT,...) 또는 mysql_options(..., MYSQL_OPT_WRITE_TIMEOUT,...) 사용과 같은 클라이언트 TCP/IP 연결 시간이 초과되었습니다. ) 함수
5, 클라이언트가 자동 재연결을 비활성화한 경우
6, 쿼리 문이 올바르지 않습니다.
7, 쿼리 문이 너무 길어서 max_allowed_packet 제한을 초과했습니다.
8, 하나 삽입으로 업데이트된 행이 너무 많습니다. 또는 명령문 바꾸기
9, 도메인 이름 확인 실패
10, 방화벽이 포트 3306
11을 차단하고, 스레드가 여러 하위 프로세스를 포크하고, 여러 하위 프로세스가 연결을 공유하면 오류가 보고됩니다
12, MySQL 서버가 끊겼습니다
MySQL 서버가 사라지는 데에는 여러 가지 이유가 있습니다. 이 문제는 세 가지 측면에서 처리할 수 있습니다.
1. 운영 및 유지 관리
a, 방화벽 규칙 확인
b, DNS 서버
d에 이상이 없습니다. php.ini
connect_timeout에서 기본값은 60s
mysqli.reconnect입니다. DBA
a입니다. mysql 서비스 및 연결 수. 예외
b, 합리적인 wait_timeout 값 설정
c, 서버 측에서 합리적인 max_allowed_packet 값 설정
d, 계정 권한이 올바른지 확인
3, 개발
a , mysql
b 대신 mysqli를 사용하는 것이 좋습니다. 긴 연결
c의 경우 mysqli.ping()은 연결이 끊어진 후 자동으로 다시 연결할 수 있습니다. 왜냐하면 mysql.ping()은 자동 재연결을 지원하지 않기 때문입니다. mysql5.0.3
d. 데이터베이스 연결
gamiss를 예로 들어 max_allowed_packet 및 timeout과 관련된 매개변수를 살펴보겠습니다.
>show variables like 'max_allowed_packet'; +--------------------+------------+ | Variable_name | Value | +--------------------+------------+ | max_allowed_packet | 1073741824 | +--------------------+------------+ >show variables like '%timeout%'; +-----------------------------+----------+ | Variable_name | Value | +-----------------------------+----------+ | connect_timeout | 60 | | delayed_insert_timeout | 300 | | have_statement_timeout | YES | | innodb_flush_log_at_timeout | 1 | | innodb_lock_wait_timeout | 120 | | innodb_rollback_on_timeout | OFF | | interactive_timeout | 86400 | | lock_wait_timeout | 31536000 | | net_read_timeout | 120 | | net_write_timeout | 120 | | rpl_stop_slave_timeout | 31536000 | | slave_net_timeout | 3600 | | thread_pool_idle_timeout | 60 | | wait_timeout | 86400 | +-----------------------------+----------+
관련 timeout 매개변수를 살펴보겠습니다. 데이터베이스에 연결할 수 없는 경우:
connect_timeout: 링크를 가져올 때 핸드쉐이크를 기다립니다. 제한 시간은 일반적으로 네트워크 불량으로 인한 연결 정체를 피하기 위해 10초입니다. 온라인 구성은 60초입니다
wait_timeout/interactive_timeout: 연결 상태가 절전 모드로 유지되는 시간 초과 시간, 기본값은 28800(8시간)이며 이제 24시간으로 조정되었습니다.
net_read_timeout: 클라이언트가 대기할 때까지 서버가 기다리는 시간 초과 데이터 전송, 기본값은 60초, 온라인 120초
net_write_timeout: 서버가 클라이언트에 데이터를 쓰는 제한 시간, 기본값은 60초, 온라인은 120초
max_allowed_packet 매개변수를 다시 살펴보세요. max_allowed_packet의 기본값은 1M(1048576), 최대값은 1G(1073741824)이며 현재 온라인 값은 이미 상한값입니다.
위 구성에서 이러한 매개변수의 설정이 상대적으로 크다는 것을 알 수 있습니다. 정상적인 상황에서 데이터베이스에 연결하는 것은 데이터베이스 자체의 매개변수 구성과 아무 관련이 없어야 합니다. 우리는 이 문제를 다른 방향에서 해결해야 합니다.
위 내용은 프로그램이 mysql에 연결할 수 없으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!