2013-03-20 3 views
-1

У меня есть этот код:таблицы Блокировка MySQL не работает в Торнадо

# Retreive the users that can obtain permission on the network except the admin 
self.lock_tables("read", ['nets_permissions as n', 'users as u']) 
usrs = self.db.query("SELECT distinct u.id FROM users as u \ 
     left outer join nets_permissions as n on u.id = n.user_id \ 
     where u.id not in \ 
     (select users.id from users left outer join nets_permissions \ 
     on users.id = nets_permissions.user_id \ 
     where nets_permissions.network_id=%s and nets_permissions.perm=3)", netid) 
self.unlock_tables() 

Но я получаю эту ошибку на экране Торнадо:

File "./wsn.py", line 571, in get where nets_permissions.network_id=%s and nets_permissions.perm=3)", netid) raise errorclass, errorvalue OperationalError: (1100, "Table 'users' was not locked with LOCK TABLES")

Где ошибка?

+0

'lock_tables' выглядит как преступник; это также похоже на ваш код, а не на Торнадо. –

ответ

0

Решение:

# Retreive the users that can obtain permission on the network except the admin 
    self.lock_tables("read", ['nets_permissions as n', 'users as u', 'nets_permissions as m', 'users as v']) 
    usrs = self.db.query("SELECT distinct u.id FROM users as u \ 
          left outer join nets_permissions as n on u.id = n.user_id \ 
          where u.id not in \ 
          (select v.id from users as v left outer join nets_permissions as m \ 
          on v.id = m.user_id \ 
          where m.network_id=%s and m.perm=3)", netid) 
    self.unlock_tables() 
Смежные вопросы