2014-11-13 18 views
11

Quando sto cercando di aggiungere una nuova riga al db "INSERT INTO invited_users VALUES ('id', nome_utente ')"H2 db 'Chunk non esiste più' errore

sto ottenendo questo errore:

General error: "java.lang.IllegalStateException: Chunk 2089 no longer exists [1.4.181/9]" 

Probabilmente si tratta di alcuni problemi con db, perché quando ho provato ad aggiungere la stessa riga a un nuovo db - l'errore è scomparso.

aggiornamento Nov 20, 2014

Buone notizie! Ho contattato gli sviluppatori di H2 db e ho scoperto che avrebbero risolto il problema nella prossima versione. https://groups.google.com/forum/#!topic/h2-database/i_GHXExjotc

Aggiornamento 6 dic 2014

Una soluzione semplice è quella di disabilitare il MVStore aggiungendo "; mv_store = false" per l'URL del database.

Ma, questo trucco non funzionerà, se hai bisogno del vecchio db. Crea nuovo database, con .h2.db estensione al posto di .mv.db

Per ovviare a questo è necessario creare script SQL del database vecchio ".mv.db" (con lo strumento Recover), e poi esegui questo script usando "runscript ...".

+0

Forse interessante: https://www.mail-archive.com/[email protected]/msg16976.html e https://groups.google.com/forum/#!topic/h2 -database/i1YwSTG8CS8 –

+0

@JimGarrison sì, grazie. Ho già letto questo – klvtsov

+0

Fornisci [un esempio minimo, completo e verificabile] (https://stackoverflow.com/help/mcve). – philipxy

risposta

5

Nella versione 1.4.182, probabilmente c'è qualcosa di sbagliato nel meccanismo che rileva quando un blocco non è più referenziato. Attualmente, questa è la garbage collection reference counting: contando le pagine live e lo spazio live. Se questo raggiunge zero, un chunk può essere sovrascritto dopo 45 secondi.

Una soluzione semplice consiste nell'utilizzare il meccanismo di archiviazione page store anziché mv_store modificando la connessione al database per utilizzare mv_store=false come soluzione.

L'opzione MV_STORE viene abilitata automaticamente dalla versione 1.4.177 Beta.

By default, the MV_STORE option is enabled, so it is using the new MVStore storage. The MVCC setting is by default set to the same values as the MV_STORE setting, so it is also enabled by default. For testing, both settings can be disabled by appending ";MV_STORE=FALSE" and/or ";MVCC=FALSE" to the database URL.

+0

@PierAlexandreBouchard nessun uomo, questa soluzione non ha funzionato per me. Crea un nuovo database, ma ho bisogno di quello vecchio. – klvtsov

+0

@PierAlexandreBouchard È possibile superare questo? – klvtsov

+0

Non è possibile per voi duplicare le righe dal vecchio al nuovo database? –

Problemi correlati