Forum

Benvenuto!

Questo è il forum ufficiale dell'Associazione Odoo Italia. Dopo esserti registrato potrai partecipare ponendo domande o rispondendo a quelle esistenti. Non scordarti di compilare il tuo profilo e consultare le linee guida prima di iniziare a scrivere.

0

[ODOO CE 14] Errore "psycopg2.errors.InsufficientPrivilege: permission denied for view account_root"

Avatar
Andrea

Ciao a tutti,

ci sono alcune tabelle che non riesco a visualizzare o modificare. Per esempio la scheda di un prodotto o l'elenco del piano dei conti. Succede da quando ho ripristinato un DB. Come posso risolvere?

Grazie per l'aiuto, ciao

Avatar
Abbandona
11 Risposte
0
Avatar
Andrea
Migliore risposta

Ho risolto in altro modo. Ho fatto un backup del DB e poi ho fatto un ripristino da web db manager con la modalità "Move" invece che "Copy" ed è andato tutto a posto!

Grazie comunque per il supporto, sempre preziosissimo e graditissimo

Avatar
Abbandona
0
Avatar
Andrea Manca
Migliore risposta

Allora dobbiamo capire in che ambiente sei:

hai un venv? 

La vista sale_report è una vista creata da chi? È una vista temporanea? 

Mi è capitato delle volte che i moduli presi dall’oca non erano completamente compatibili con la versione che stavo utilizzando.

puoi descrivere versione di Odoo, Postgresql, sistema operativo, ambiente, etc?


Avatar
Abbandona
0
Avatar
Andrea
Migliore risposta

E' una macchina virtuale AWS Debian 11 / Odoo 14 creata da me seguendo le istruzioni Odoo. Nella cartella /etc/postgresql c'è sia la versione 14 che la 15. Non credo che sia in ambiente virtuale, anche perchè quando ho fatto accesso a postgresql e ho elencato i DB c'erano effettivamente quelli in uso.

Odoo funziona perfettamente, nel senso che uso quotidianamente i moduli progettazione, spese, sales, fatturazione, con emissione e invio PEC delle fatture elettroniche. I database sono però stati ripristinati dai backup della precedente macchina virtuale ed è solo dopo il ripristino che danno questo problema di permessi. Le viste dei prodotti sono quelle standard di Odoo. Di moduli aggiuntivi non ufficiali ci sono solo quelli OCA della contabilità italiana e quello OCA per il Web Responsive.

La vista sale_report immagino che sia una vista standard (è richiamata quando provo ad aprire la scheda di un prodotto). Ho provato a cercarla da Funzioni tecniche sia fra le viste standard che fra le viste personalizzate ma esattamente con questo nome non l'ho trovata. Ho trovato altre 4 viste che includono sale.report nel nome (sale.report.search, sale.report.pivot, sale.report.graph, Sale report common assets).

Forse può aiutare il testo completo dell'errore in Odoo:

"Errore:

Odoo Server Error

Traceback (most recent call last):

  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_http.py", line 237, in _dispatch

    result = request.dispatch()

  File "/usr/lib/python3/dist-packages/odoo/http.py", line 685, in dispatch

    result = self._call_function(**self.params)

  File "/usr/lib/python3/dist-packages/odoo/http.py", line 361, in _call_function

    return checked_call(self.db, *args, **kwargs)

  File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 94, in wrapper

    return f(dbname, *args, **kwargs)

  File "/usr/lib/python3/dist-packages/odoo/http.py", line 349, in checked_call

    result = self.endpoint(*a, **kw)

  File "/usr/lib/python3/dist-packages/odoo/http.py", line 914, in __call__

    return self.method(*args, **kw)

  File "/usr/lib/python3/dist-packages/odoo/http.py", line 533, in response_wrap

    response = f(*args, **kw)

  File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 1388, in call_kw

    return self._call_kw(model, method, args, kwargs)

  File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 1380, in _call_kw

    return call_kw(request.env[model], method, args, kwargs)

  File "/usr/lib/python3/dist-packages/odoo/api.py", line 399, in call_kw

    result = _call_kw_multi(method, model, args, kwargs)

  File "/usr/lib/python3/dist-packages/odoo/api.py", line 386, in _call_kw_multi

    result = method(recs, *args, **kwargs)

  File "/usr/lib/python3/dist-packages/odoo/models.py", line 3022, in read

    return self._read_format(fnames=fields, load=load)

  File "/usr/lib/python3/dist-packages/odoo/models.py", line 3042, in _read_format

    vals[name] = convert(record[name], record, use_name_get)

  File "/usr/lib/python3/dist-packages/odoo/models.py", line 5694, in __getitem__

    return self._fields[key].__get__(self, type(self))

  File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1021, in __get__

    self.compute_value(recs)

  File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1177, in compute_value

    records._compute_field_value(self)

  File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_thread.py", line 410, in _compute_field_value

    return super()._compute_field_value(field)

  File "/usr/lib/python3/dist-packages/odoo/models.py", line 4069, in _compute_field_value

    getattr(self, field.compute)()

  File "/usr/lib/python3/dist-packages/odoo/addons/sale/models/product_template.py", line 63, in _compute_sales_count

    product.sales_count = float_round(sum([p.sales_count for p in product.with_context(active_test=False).product_variant_ids]), precision_rounding=product.uom_id.rounding)

  File "/usr/lib/python3/dist-packages/odoo/addons/sale/models/product_template.py", line 63, in <listcomp>

    product.sales_count = float_round(sum([p.sales_count for p in product.with_context(active_test=False).product_variant_ids]), precision_rounding=product.uom_id.rounding)

  File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1021, in __get__

    self.compute_value(recs)

  File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1177, in compute_value

    records._compute_field_value(self)

  File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_thread.py", line 410, in _compute_field_value

    return super()._compute_field_value(field)

  File "/usr/lib/python3/dist-packages/odoo/models.py", line 4069, in _compute_field_value

    getattr(self, field.compute)()

  File "/usr/lib/python3/dist-packages/odoo/addons/sale/models/product_product.py", line 28, in _compute_sales_count

    for group in self.env['sale.report'].read_group(domain, ['product_id', 'product_uom_qty'], ['product_id']):

  File "/usr/lib/python3/dist-packages/odoo/models.py", line 2254, in read_group

    result = self._read_group_raw(domain, fields, groupby, offset=offset, limit=limit, orderby=orderby, lazy=lazy)

  File "/usr/lib/python3/dist-packages/odoo/models.py", line 2381, in _read_group_raw

    self._cr.execute(query, where_clause_params)

  File "<decorator-gen-3>", line 2, in execute

  File "/usr/lib/python3/dist-packages/odoo/sql_db.py", line 101, in check

    return f(self, *args, **kwargs)

  File "/usr/lib/python3/dist-packages/odoo/sql_db.py", line 300, in execute

    res = self._obj.execute(query, params)

Exception


The above exception was the direct cause of the following exception:


Traceback (most recent call last):

  File "/usr/lib/python3/dist-packages/odoo/http.py", line 641, in _handle_exception

    return super(JsonRequest, self)._handle_exception(exception)

  File "/usr/lib/python3/dist-packages/odoo/http.py", line 317, in _handle_exception

    raise exception.with_traceback(None) from new_cause

psycopg2.errors.InsufficientPrivilege: permission denied for view sale_report"

Avatar
Abbandona
0
Avatar
Andrea
Migliore risposta

Mi sono dimenticato un dettaglio importante. Questo errore c'è su un solo DB (e sulla copia di test che ne ho fatto). Sull'altro no

Avatar
Abbandona
0
Avatar
Andrea Manca
Migliore risposta

Buonasera ciao,

probabilmente sono i permessi che la role che utilizzi per la connessione al db. Se l’hai creata tu l’utenza assicurati di fare owner del db di odoo in modo da permettere qualsiasi operazione su qualsiasi tabella, ma utilizza un utenza dedicata è solo per quel db così non fai buchi di sicurezza.


spero di esserti stato di aiuto. Sono a disposizione


buonaserata

Avatar
Abbandona
0
Avatar
Andrea
Migliore risposta

Grazie! Seguendo queste istruzioni dovrei quindi risolvere:

https://www.delftstack.com/howto/postgres/grant-privileges-to-the-user-in-postgresql/

Avatar
Abbandona
0
Avatar
Andrea Manca
Migliore risposta

si se cerchi delle guide migliori anche digital ocean sono molto bravi e sono chiari ma comunque è semplice devi garantire all'utente che si connette al db di avere ALL PRIVILEGES sul DB di Odoo.

Puoi agire in due modi o dai i permessi all'utente oppure fai diventare l'utente owner del DB:

Owner del DB:

ALTER DATABASE mydb OWNER TO dbowner;

source: [https://serverfault.com/questions/198002/postgresql-what-does-grant-all-privileges-on-database-do]


Privilegi:

GRANT SELECT ON ALL TABLES IN SCHEMA "public" TO reader;
source: [https://www.postgresqltutorial.com/postgresql-administration/postgresql-grant/]

Spero di averti aiutato a risolvere.

Avatar
Abbandona
0
Avatar
Andrea
Migliore risposta

Ho verificato e l'utente odoo era già owner del db_test. Ho comunque lanciato il comando per dargli tutti i privilegi. Quindi ho stoppato e riavviato sia Postresql che Odoo. Purtroppo il problema è rimasto, se provo ad aprire la scheda di un prodotto ottengo: "psycopg2.errors.InsufficientPrivilege: permission denied for view sale_report"

Il LOG di Postresql riporta la stessa cosa "2023-03-13 17:52:39.382 UTC [335468] odoo@db_test ERROR:  permission denied for view sale_report"

Forse non basta dare i privilegi su tutte le tabelle... Cosa mi suggerite di fare?


Avatar
Abbandona
0
Avatar
Andrea Manca
Migliore risposta

Dobbiamo garantire che l’utente abbia tutte le tipologie di diritti se ne manca una le query non vanno a buon fine, ma se concedendo i diritti alle sequence e a tutti i “layer” di autwnticazione non funziona forse il db non coincide con la versione di Odoo oppure nel modulo di Odoo risiede un codice non corretto per il db.

il db è pubblico? Posso avere accesso così lo controllo? 

Scusa, troppo diretto è che mi piace risolvere…

:)

Avatar
Abbandona
0
Avatar
Andrea Manca
Migliore risposta

Buongiorno hai risolto?

Avatar
Abbandona
0
Avatar
Andrea
Migliore risposta

Ho risolto in altro modo. Ho fatto un backup del DB e poi ho fatto un ripristino da web db manager con la modalità "Move" invece che "Copy" ed è andato tutto a posto!


Grazie comunque per il supporto, sempre preziosissimo e graditissimo

Avatar
Abbandona
0
Avatar
Andrea Manca
Migliore risposta

Sicuramente per stare tranquilli io farei un controllo sulla versione di provenienza del DB perchè mi hai detto che lo hai importato quindi potrebbe non essere in linea con la versione, inoltre in postgresql ci sono vari livelli di autenticazione riporto un link per il controllo di tutti. L'errore è relativo ai permessi ma potrebbe essere generato da funzioni non congrue con il db.

https://dba.stackexchange.com/questions/53914/permission-denied-for-relation-table

Avatar
Abbandona
0
Migliore risposta

Hai provato con un  

GRANT ALL PRIVILEGES ON SCHEMA "public" to odoo 

Inoltre

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON ALL TABLES to odoo 

 

Avatar
Abbandona