Это сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

Зависание _mysql (mysqldb)

Мучался-мучался, на выборке висит модуль _mysql (это биндинг mysqldb к MySQL у Python). Совершенно случайно заметил, что нигде не указываю кодировку, указал — виснуть перестало.

Судя по strace, модуль чего-то ждёт из сокета, ощущение такое, что просто неверно подсчитывается длина контента — если не указать кодировку, данных ожидается больше, чем приходит. Мда.

Добавлено чуть позже: да что ж такое! Опять висит. И с указанием кодировки — тоже. В интернете ничего нет, что же я не так делаю?

Через _mysql — висит, через MySQLdb — тоже, через execute — висит, через курсор — тоже. Что ж это такое-то?

Добавлено ещё позже: вот весь код:

import MySQLdb as mysql

db = mysql.connect(\
    host = 'localhost',
    user = 'log',
    passwd = 'xxx',
    db = 'log',
    use_unicode = True,
    charset='utf8'
)

c  = db.cursor()
c.execute("SELECT * FROM wp_4_posts")

Вот так уже висит. Не знаю что с этим делать, пойду домой.

8 комментариев
LXj (lxj.endofinternet.net) 2010

А ты тут раньше pymysql упоминал. Почему пользуешься именно mysql-python, а не им?

Евгений Степанищев (bolknote.ru) 2010

Комментарий для lxj.endofinternet.net:

Я его попробовал поставить. Не смог подключиться ничем, кроме рута. Когда сменил пароль рута, то и рутом не смог. Ошибка авторизации пишет (ошибка №1043).

LXj (lxj.endofinternet.net) 2010

А сколько строк в wp_4_posts и какой курсор используется?

LXj (lxj.endofinternet.net) 2010

*какие курсоры пробовал, очевидно

LXj (lxj.endofinternet.net) 2010

Ну и, видимо, глупый вопрос -​-​ другими способами (скажем, в консольном mysql-клиенте) запрос выполняется без проблем?

Евгений Степанищев (bolknote.ru) 2010

Комментарий для lxj.endofinternet.net:

А сколько строк в wp_4_posts

Строк — дофига, не считал

какие курсоры пробовал

только дефолтный

другими способами (скажем, в консольном mysql-клиенте) запрос выполняется без проблем?

увы, да, консольный клиент выдаёт без проблем

LXj (lxj.endofinternet.net) 2010

Если строк дофига, то может быть стоит попробовать use_result вместо store_result? Ну или попробовать для начала считать не все строки, а по сотне

Евгений Степанищев (bolknote.ru) 2010

Комментарий для lxj.endofinternet.net:

Ох, оказалось, что после перезагрузки всё нормализировалось. Я как-то не ожидал такого.