복붙노트

[PYTHON] MySQL 오류 : 2013, "초기 통신 패킷 읽기 중, 시스템 오류 : 0"에서 MySQL 서버 연결이 끊어졌습니다.

PYTHON

MySQL 오류 : 2013, "초기 통신 패킷 읽기 중, 시스템 오류 : 0"에서 MySQL 서버 연결이 끊어졌습니다.

Python의 MySQLdb 라이브러리를 사용하여 로컬 MySQL 데이터베이스에 연결하는 데 문제가 있습니다. 스크립트는 이전에 잘 작동했지만, 가끔 제목에 MySQL 오류가 나타납니다. 오류가 발생하는시기에 대한 설명이없는 것 같으며 스크립트는 항상 동일한 인수로 동일한 시스템에서 실행됩니다.

MySQL 서버는 포트 3306 (로컬로 호스트 된 phpMyAdmin 작동)을 사용하여 Windows XP SP3에서 서비스로 실행되며 스크립트는 Oracle VM VirtualBox의 Ubuntu 10.04 게스트 운영 체제에서 실행됩니다.

현재이 문제를 해결하기 위해 명령 프롬프트를 열고 'net stop MySQL'을 실행 한 다음 'net start MySQL'을 실행합니다. 이렇게하면 오류가 발생하기 전에 다시 스크립트를 몇 번 실행할 수 있습니다.이 오류는 MySQL 서비스를 다시 시작하여 해결할 수 있습니다.

아직 스크립트를 변경하고 있기 때문에 스크립트에서 예외를 발생시키고 정상적으로 종료하지 않는 경우가 있습니다. 예외를 catch하고 커서와 연결을 닫을 수도 있습니다.

데이터베이스에 연결하는 코드는 다음과 같습니다.

def __init__(self):
  try:
    print "Connecting to the MySQL database..."
    self.conn = MySQLdb.connect( host = "192.168.56.1",
                                 user = "guestos",
                                 passwd = "guestpw",
                                 db = "testdb")
    self.cursor = self.conn.cursor(MySQLdb.cursors.DictCursor)
    print "MySQL Connection OK"
  except MySQLdb.Error, e:
    print "MySQLdb error %d: %s" % (e.args[0],e.args[1])
    raise

이 경우 발생하는 전체 오류는 다음과 같습니다.

MySQLdb error 2013: Lost connection to MySQL server at 'reading initial communication packet', system error: 0
Traceback (most recent call last):
  File "search.py", line 45, in <module>
    dataHandler = DataHandler()
  File "/home/guestos_user/workspace/Search/src/data_handler.py", line 25, in __init__
    db = "testdb")
  File "/usr/lib/pymodules/python2.6/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 170, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 0")

해결법

  1. ==============================

    1.

    sudo vi /etc/mysql/my.cnf
    

    지우다

    bind-address = 127.0.0.1
    

    그때

    sudo reboot now
    

    그게 전부 야. 이렇게하면 노출 될 때 mysql 서버가 덜 안전해진다는 것을 알아 두십시오.

  2. ==============================

    2.자식 프로세스가 동일한 mysql 연결 ID (솔루션 = 각 자식 프로세스에 대한 새 연결 만들기)를 공유하려고 할 때 이런 일이 발생하는 것을 보았습니다. 연결 개체를 여러 스레드와 공유 할 때 이것이 가능하면 확실하지 않습니다.

    자식 프로세스가 동일한 mysql 연결 ID (솔루션 = 각 자식 프로세스에 대한 새 연결 만들기)를 공유하려고 할 때 이런 일이 발생하는 것을 보았습니다. 연결 개체를 여러 스레드와 공유 할 때 이것이 가능하면 확실하지 않습니다.

    그러나 이는 여러 가지 가능한 원인 중 하나 일뿐입니다. 문제 해결 리소스 목록은 MySQL 오류 2013의 VVS 응답을 참조하십시오.

  3. ==============================

    3.MySQL 서버에 guestos @ YOURIPADDRESS라는 이름의 acount가 있습니까? YOURIPADDRESS에서 MySQL 서버에 액세스하려면 계정이 있어야합니다!

    MySQL 서버에 guestos @ YOURIPADDRESS라는 이름의 acount가 있습니까? YOURIPADDRESS에서 MySQL 서버에 액세스하려면 계정이 있어야합니다!

    예 : 귀하의 IP 주소는 192.168.56.2입니다; 액세스하려면 존재하지 않는 경우 작성하고 계정해야합니다.

    mysql> create user guestos@192.168.56.2 identified by 'guestpw';
    
  4. ==============================

    4.문제는 내 Mac을 다시 시작하여 해결되었습니다. 비록 더 구체적인 해결책이있을지라도.

    문제는 내 Mac을 다시 시작하여 해결되었습니다. 비록 더 구체적인 해결책이있을지라도.

  5. ==============================

    5.bind-address = localhost를 변경하고 MySQL 서버를 재시작 할 수 있습니까? 이 문제가 귀하와 관련되어있는 것 같습니다 : http://forums.mysql.com/read.php?152,355740,355742#msg-355742

    bind-address = localhost를 변경하고 MySQL 서버를 재시작 할 수 있습니까? 이 문제가 귀하와 관련되어있는 것 같습니다 : http://forums.mysql.com/read.php?152,355740,355742#msg-355742

    또한이 -

    이것을 참조하십시오.

  6. ==============================

    6.나는 Windows 서버를 실행하고 때로는 php-win.exe가로드되어 Windows 작업 관리자의 프로세스 목록에 남아 있습니다.

    나는 Windows 서버를 실행하고 때로는 php-win.exe가로드되어 Windows 작업 관리자의 프로세스 목록에 남아 있습니다.

    호스트 파일이 정확한지 알고 있으면 php-win.exe 프로세스를 종료하고 iis iisreset을 다시 시작하십시오.

    창을 돌리고 있다면 문제가 해결되어야합니다.

  7. ==============================

    7.난 정확히 동일한 MySQL의 오류가 발생했습니다 (오류 2013 (HY000) : '초기 통신 패킷 읽기'에서 MySQL 서버에 대한 연결이 끊어졌습니다. 시스템 오류 : 0 =) /etc/hosts.deny에 줄 바꿈을 추가하여 해결했습니다. .

    난 정확히 동일한 MySQL의 오류가 발생했습니다 (오류 2013 (HY000) : '초기 통신 패킷 읽기'에서 MySQL 서버에 대한 연결이 끊어졌습니다. 시스템 오류 : 0 =) /etc/hosts.deny에 줄 바꿈을 추가하여 해결했습니다. .

  8. ==============================

    8.가능성 : 데이터베이스가 손상되었습니다.

    가능성 : 데이터베이스가 손상되었습니다.

    특정 테이블의 특정 행에서 UPDATE 문을 실행할 때이 상황이 발생했습니다. (특히, 장고 관리자 사이트에서 항목을 편집하고있었습니다.) 대부분의 경우 데이터베이스가 정상적으로 작동했습니다.

    나는이 문제를 마침내 다음과 같이 실행했다.

    OPTIMIZE TABLE `your_table`
    

    그 모든 것이 OK 였고 아무런 연결이 끊어지지 않았습니다.

    결론:

    "초기 통신 패킷 읽기"에서 MySQL 서버에 연결이 끊어지는 문제 ( "127.0.0.1 '에서 MySQL 서버에 연결할 수없는 경우가 있음)는 데이터베이스가 손상된 경우 전체 데이터베이스 최적화를 실행하여 해결할 수 있습니다. 자세한 내용은이 부분을 읽으십시오.

  9. ==============================

    9.충분한 권한을 가진 사용자를 통해 MySQL 서버에 원격으로 연결을 시도 할 때 유사한 오류가 발생했습니다.

    충분한 권한을 가진 사용자를 통해 MySQL 서버에 원격으로 연결을 시도 할 때 유사한 오류가 발생했습니다.

    포함 할 /etc/mysql/my.cnf 파일을 편집 한 후

    [mysqld]
    bind-address=xx.xx.xxx.xxx
    

    여기서 xx.xx.xxx.xxx는 로컬 IP 주소이므로 정확한 오류가 발생하기 시작했습니다. 그곳에서 저에게 도움이되는이 문제 (Coffee Converter가 답변 한)에 관한 답변을 찾았으며 여기에서 찾을 수 있습니다 : Windows 서버에서 '초기 통신 패킷 읽기', 시스템 오류 : 0에서 MySQL 서버 연결이 끊어졌습니다

    내가 직접 문제를 해결하기 위해 /etc/hosts.allow 파일을 편집했다.

    mysqld: ALL: allow
    

    지금 큰 작품! 나는 이것이 도움이되기를 바랍니다 :)

  10. ==============================

    10.이 버그 보고서는 여러분에게 흥미로울 것입니다. 이 방법이 도움이 될지 모르지만 일부는 연결 속성의 IP 주소가 아닌 서버 이름을 사용하여 해결할 수 있습니다.

    이 버그 보고서는 여러분에게 흥미로울 것입니다. 이 방법이 도움이 될지 모르지만 일부는 연결 속성의 IP 주소가 아닌 서버 이름을 사용하여 해결할 수 있습니다.

  11. from https://stackoverflow.com/questions/3578147/mysql-error-2013-lost-connection-to-mysql-server-at-reading-initial-communic by cc-by-sa and MIT license