programing

쿼리하는 동안 MySQL 서버에 대한 연결이 끊어졌습니까?

lovejava 2023. 7. 23. 13:54

쿼리하는 동안 MySQL 서버에 대한 연결이 끊어졌습니까?

중복 가능성:
쿼리하는 동안 MySQL 서버에 대한 연결이 끊어졌습니다.

나는 큰 csv에서 mysql 테이블로 일부 데이터를 가져오고 있습니다.파일을 테이블로 가져오는 동안 서버와의 연결이 끊깁니다.

무엇이 잘못되고 있습니까?

오류 코드는 2013: 쿼리 중에 mySql 서버에 대한 연결이 끊겼습니다.

Windows 서버에서 원격으로 Ubuntu 컴퓨터에서 이러한 쿼리를 실행하고 있습니다.

다음 두 가지를 시도해 보십시오.

에 추가합니다.my.cnf / my.ini에서[mysqld]부분

max_allowed_packet=32M

(기존 데이터베이스를 기준으로 이 값을 더 높게 설정해야 할 수도 있습니다.)

그래도 가져오기가 작동하지 않으면 이렇게도 시도해 보십시오...

mysql -u <user> --password=<password> <database name> <file_to_import

일반적으로 메모리와 같은 DB 세션의 리소스를 하나 소진하고 mysql이 연결을 닫을 때 발생합니다.

CSV 파일을 더 작은 파일로 쪼개서 처리할 수 있습니까?아니면 100줄마다 커밋합니까?실행 중인 트랜잭션이 대량의 데이터를 삽입하려고 하면 안 된다는 것입니다.

추가하는 것을 잊었습니다. 이 오류는 구성 속성과 관련이 있습니다.max_allowed_packet무엇을 바꿔야 할지 자세히 기억이 안 나요.

이 문제에 대한 가장 쉬운 해결책은 MySQL을 MySQL Workbench에서 MySQL Version 1.2.17로 다운그레이드하는 것이었습니다.저는 MySQL 포럼을 검색했는데, MySQL Workbech의 타임아웃 시간이 600으로 하드 코딩되었다고 하는데, 이를 변경하기 위한 몇 가지 제안된 방법은 저에게 효과가 없었습니다.워크벤치에서 동일한 문제에 직면한 경우 다운그레이드를 시도할 수도 있습니다.

연결 시간 제한을 늘려야 할 수도 있습니다.

--log-sqld=2 옵션을 사용하여 mysqld를 시작하면 연결 끊김에 대한 자세한 정보를 얻을 수 있습니다.

그러면 연결이 끊어진 일부 오류가 hostname.err 파일에 기록됩니다.

당신은 그것을 사용해서 더 많은 조사를 할 수 있습니다.

데이터를 BLOB 열로 보내려면 기본값이 1MB인 서버의 max_allowed_packet 변수를 확인하십시오. 클라이언트 끝에서 최대 패킷 크기를 늘려야 할 수도 있습니다.패킷 크기 설정에 대한 자세한 내용은 "Packet too large" 링크에 나와 있습니다.

다음 URL 링크를 확인할 수 있습니다.

사용 가능한 디스크 공간이 업데이트하려는 테이블보다 큰지 확인해야 합니다. 링크

"쿼리 중 연결 끊김" 시나리오에 대한 이유와 해결책을 잘 설명하는 http://dev.mysql.com/doc/refman/5.0/en/gone-away.html 을 읽고 싶을 것입니다.

당신의 경우, Augusto가 지적한 최대 허용 패킷 크기 때문일 수 있습니다.그렇지 않다는 것을 확인한 경우 클라이언트의 연결 끊김으로 인한 연결 대기 시간 초과 설정일 수 있습니다.하지만 CSV 파일이고 쿼리를 포함하지 않기 때문에 후자는 사실이 아니라고 생각합니다.

mysql_ping() 함수를 사용하시면 될 것 같습니다.

이 기능은 서버에 대한 연결이 활성화되었는지 여부를 확인합니다. 연결이 실패하면 다시 연결하여 쿼리를 계속 진행할 수 있습니다.

언급URL : https://stackoverflow.com/questions/6516943/lost-connection-to-mysql-server-during-query