Ogni volta che provo a duplicare o eliminare i database dall'interfaccia ottengo sempre questo errore, anche se tutti gli utenti sono disconnessi:Non riesco a duplicare o rilasciare il database dall'interfaccia Odoo perché ci sono sessioni che utilizzano il database. Come risolverlo in modo permanente?
ERROR: source database "database_name" is being accessed by other users
DETAIL: There are 5 other sessions using the database.
Poi, se vuole duplicare o eliminare un database devo correre questo interrogare di interrompere tutti i collegamenti prima:
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'database_name' AND pid <> pg_backend_pid();
Quello che vorrei fare è quello di sostituire le seguenti controller al fine di eseguire la query sempre prima dell'esecuzione delle funzioni duplicate_database
e drop
:
@http.route('/web/database/duplicate', type='json', auth="none")
def duplicate(self, fields):
params = dict(map(operator.itemgetter('name', 'value'), fields))
duplicate_attrs = (
params['super_admin_pwd'],
params['db_original_name'],
params['db_name'],
)
return request.session.proxy("db").duplicate_database(*duplicate_attrs)
@http.route('/web/database/drop', type='json', auth="none")
def drop(self, fields):
password, db = operator.itemgetter(
'drop_pwd', 'drop_db')(
dict(map(operator.itemgetter('name', 'value'), fields)))
try:
if request.session.proxy("db").drop(password, db):
return True
else:
return False
except openerp.exceptions.AccessDenied:
return {'error': 'AccessDenied', 'title': 'Drop Database'}
except Exception:
return {'error': _('Could not drop database !'), 'title': _('Drop Database')}
E ho trovato questa nota nel Documentation of Odoo:
[...] Questa operazione richiede che non vi sia alcuna connessione al database essere duplicato, ma vudù non suddivide esistente/connessioni in sospeso, quindi il riavvio del server è il modo più semplice per garantire che tutto sia nello stato giusto.
È sicuro sovrascrivere questi controller? Qual è il modo migliore per farlo? Mi piacerebbe farlo usando l'interfaccia perché se lo faccio manualmente o se devo fermare il server ogni volta che è necessario è molto fastidioso.
Penso che tu non stia capendo cosa sto cercando di fare. Sto cercando di rimuovere il database dall'interfaccia di Odoo Database Manager, interrompendo le connessioni prima di farlo, per evitare che il database di origine di ERROR "database_name" sia accessibile ad altri utenti.E non voglio interrompere il server Odoo e non voglio interrompere manualmente le connessioni – ChesuCR