Projet

Général

Profil

Bug #3657

sql: crash quand la table users n'existe pas encore

Ajouté par Thomas Noël il y a plus de 10 ans. Mis à jour il y a plus de 10 ans.

Statut:
Fermé
Priorité:
Immediat
Assigné à:
-
Version cible:
-
Début:
24 septembre 2013
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Planning:

Description

Quand on arrive sur un site wcs en mode SQL et que la table users n'existe pas encore, l'accès à /admin plante car le test "get_publisher().user_class.count() > 0" ne fonctionne pas :

Exception:
  type = '<class 'psycopg2.ProgrammingError'>', value = 'ERREUR:  la relation  users  n'ex
iste pas
LINE 1: SELECT count(*) FROM users
                             ^
'

Stack trace (most recent call first):
  File "/usr/lib/python2.6/site-packages/wcs/sql.py", line 238, in count
   236         conn, cur = get_connection_and_cursor()
   237         sql_statement = 'SELECT count(*) FROM %s' % cls._table_name
>  238         cur.execute(sql_statement)
   239         count = cur.fetchone()[0]
   240         conn.commit()

  locals:
     sql_statement = 'SELECT count(*) FROM users'
     cur = <cursor object at 0x2488de0; closed: 0>
     conn = <connection object at 0x2a50010; dsn: 'dbname=wcs', closed: 0>
     cls = <class 'sql.SqlUser'>

  File "/usr/lib/python2.6/site-packages/wcs/sql.py", line 95, in f
    93         except psycopg2.Error:
    94             get_connection().rollback()
>   95             raise
    96     return f
    97

  locals:
     args = (<class 'sql.SqlUser'>,)
     func = <function count at 0x1d52410>
     kwargs = {}

  File "/usr/lib/python2.6/site-packages/wcs/admin/root.ptl", line 90, in _q_access
    88                 raise errors.AccessForbiddenError()
    89         else:
>   90             if get_publisher().user_class.count() > 0:
    91                 raise errors.AccessUnauthorizedError()
    92

Historique

#1

Mis à jour par Thomas Noël il y a plus de 10 ans

  • Description mis à jour (diff)
#2

Mis à jour par Thomas Noël il y a plus de 10 ans

Il s'agit d'un cas exceptionnel : suppression manuelle de la table "users"

$ wcsctl shell
>>> import sql
>>> sql.do_user_table()
#3

Mis à jour par Thomas Noël il y a plus de 10 ans

  • Statut changé de Nouveau à Fermé

Formats disponibles : Atom PDF