Image

Imageuznick wrote in Imageru_python

Listens: Perry Blake - House In The Clouds | Powered by Last.fm

Categories:

Впервые за последние 3 года взял в руки MySQL и крайне озадачен.

Использую MySQLdb 1.2.3, MySQL 5.5.10

class DB(object):
...
    def execute(self, sql, val=None):
        cursor = self._conn.cursor()
        cursor.execute(sql, val)
        print cursor._executed

        if not cursor.rowcount: return None

        return cursor
...

class Sql(object):
...
    def fetch(self, db):
        cursor = db.execute(self.query, tuple(self.vals,))

        if not cursor:
            return None
       
       raw_rows = cursor.fetchall()
       cursor.close()
       
       return raw_rows
...

rows = sql.fetch(db)

print dict((row.id, row.login) for row in rows)


Если что-то дохнет на стадии последней строчки, например, мы получаем залоченную таблицу и DROP TABLE в состоянии "Waiting for table metadata lock". Лок висит намертво, приходится руками kill процессу делать через mysql консоль.

Притом, та же фигня происходит и с ENGINE=MyISAM и с ENGINE=InnoDB.

Не исключено, что я просто не умею её готовить, но раньше таких проблем я не припоминаю, например.

Подскажите, пожалуйста, куда рыть, блин?

UPD: Задаунгрейдил мускуль до 5.1.55, всё прекрасно заработало. Так и не понял, в чём проблема была, но похоже связку драйвер-база колбасило.