Django: Exception Value (2013, '2013: Потеряно соединение с сервером MySQL во время запроса', Нет)

Недавно я обновил Django с версии 1.6.5 до 1.7.1 и mysql-connector-python с 1.x до 2.0.2. После обновления Exception(2013) поднимается большую часть времени, когда я делаю запрос.

Exception Type: InterfaceError
Exception Value: (2013, '2013: Lost connection to MySQL server during query', None)

Я добавил некоторые настройки о «CONN_MAX_AGE», «wait_timeout», но это не помогает. Вот мои настройки:

Из командной строки:

C:/>pip freeze
Django==1.7.1
South==1.0.1
mysql-connector-python==2.0.2
.....
C:/python -c "import django; print(django.get_version())"
1.7.1

Из settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'mysql.connector.django', 
        'NAME': 'djangodb',
        'USER': 'djangodb',
        'PASSWORD': '******',
        'HOST': '********',   
        'PORT': '3306',
        'CONN_MAX_AGE' : 600,
    }
}

Настройки MySQL:

show variables like 'wait_timeout'; #=>28800
show variables like 'net_read_timeout'; #=>30

views.py:

@user_passes_test(lambda u: u.is_superuser)
def db(request, table):
    from django.db import connection
    cursor = connection.cursor()

    if table == "table_status":
        cursor.execute("SHOW TABLE STATUS")       #No exception 4/5 times
    elif table == "processlist":
        cursor.execute("SHOW PROCESSLIST")        #No exception 4/5 times
    elif table == "status":
        cursor.execute("SHOW STATUS")             #No exception 4/5 times
    elif table == "variables":
        cursor.execute("SHOW VARIABLES")          #Exception is raised 49/50 times

    if(cursor):    
        data = cursor.fetchall()
        description = cursor.description
        cursor.close()
        return render_to_response("myadmin/table.html", {"title": table, "headers":description,"data":data})
    else:
        return render_to_response("ajax/error404.html")

Пожалуйста, помогите мне решить проблему.


person Nghung    schedule 05.12.2014    source источник
comment
Я никогда раньше не видел эту базу данных ENGINE. В моей новой установке Django 1.7 отображается «ENGINE»: «django.db.backends.mysql»   -  person Nostalg.io    schedule 05.12.2014
comment
Компонент Database Engine настраивается в соответствии с этим руководством и это руководство   -  person Nghung    schedule 05.12.2014


Ответы (1)


Ok. Я немного покопался, и похоже, что это известная проблема с Django 1.7 и версией 2.0. .2 из mysql-connector-python.

Ошибка помечена как «исправленная» в версии 2.0.3, но еще не выпущена.

РЕДАКТИРОВАТЬ: ОП сообщил о переходе на версию 1.2.3 как о временном решении:

pip install -U --allow-external mysql-connector-python mysql-connector-python==1.2.3
person Nostalg.io    schedule 05.12.2014
comment
Mysql-connector-python действительно вызвал проблему. Версия 2.0.3 еще не выпущена, поэтому я понизил версию mysql-connection-python до версии 1.2.3. Это решило проблему. Большое спасибо. pip install -U --allow-external mysql-connector-python mysql-connector-python==1.2.3 - person Nghung; 05.12.2014