In caso di errore database per uno o più utenti CDR (es. disk image is malformed )
Si può procedere come segue, alla riparazione o alla ricreazione del db SQLite:
1) Spegnere le funzionalità CDR lato pbx
(togliere la spunta a fianco "abilitato" e premere "salva"
2) Creare backup del database danneggiato
Scaricare il file da ssh (es. WinSCP) e metterlo sul pc per evitare danni.
Una volta scaricato il db, è possibile verificare che i dati siano quelli giusti con la app gratuita DB Browser
Ovviamente, il programma riscontrerà degli errori in consultazione, ciò confermerebbe i disservizi riscontrati (ad esempio, cancellando i record che fanno parte della zona danneggiata).
3) Analizzare dove sono localizzati gli errori nel db
Da terminale del pbx, abilitare i permessi di root:
su
(la password è: wildix)
e raggiungere la cartella contenente il database:
cd /mnt/cdr/
Effettuare un check integrità con sqlite3:
sqlite3 cdrdb "pragma integrity_check"
Il sistema elencherà degli errori, con le righe corrispondenti alla posizione.
4) Tentare la riparazione automatica
sqlite3 può effettuare una riparazione automatica del database coi seguenti comandi:
sqlite3 cdrdb "reindex nodes"
E poi
sqlite3 cdrdb "reindex pristine"
In caso i comandi non facciano effetto (es. Error: unable to identify the object to be reindexed)...
Si può procedere come segue...
5) Esportare il contenuto del database in un file di testo, e reimportarlo in un nuovo database
Aprire il database da riga di comando:
sqlite3 cdrdb
e inserire i seguenti comandi per esportare su file di testo:
sqlite> .mode insert
(premere invio)
sqlite> .output scaricatutto.sql
(premere invio)
sqlite> .dump
(premere invio e attendere l'esportazione)
sqlite> .exit
(premere invio)
Ora, va rinonimato il vecchio database:
mv cdrdb cdrdbcorrotto
E reimportiamo i dati esportati in un nuovo database con lo stesso nome dell'originale:
sqlite3 cdrdb
sqlite> .read scaricatutto.sql
(premere invio e attendere l'importazione)
sqlite> .exit
(premere invio)
6) Riabilitare il database lato pbx
Dare permessi completi di lettura e scrittura sul nuovo database appena ricreato.
chmod 777 cdrdb
In caso i file salvati siano molti, si può fare spazio buttando via il vecchio database corrotto, e il file di testo sql usato per l'esportazione sul nuovo db
rm cdrdbcorrotto
rm scaricatutto.sql
7) Verificare il funzionamento del cdr
Riaccendere le funzionalità cdr sqlite lato pbx , reinserendo la spunta e premendo "salva".
Entrare da collaboration e verificare il funzionamento.