Frage

Ich bin mit Berkely DB und ich habe einen Fehler, der besagt, dass Mutationen fehlen. Was bedeutet das?

Exception: com.sleepycat.persist.evolve.IncompatibleClassException: Mutation is missing to evolve class: TopMoveDAO.TopMoveClass version: 0 Error: java.lang.ClassNotFoundException: TopMoveDAO.TopMoveClasscom.sleepycat.persist.evolve.IncompatibleClassException: Mutation is missing to evolve class: TopMoveDAO.TopMoveClass version: 0 Error: java.lang.ClassNotFoundException: TopMoveDAO.TopMoveClass

bei com.sleepycat.persist.impl.PersistCatalog. (PersistCatalog.java:365)  bei com.sleepycat.persist.impl.Store. (Store.java:180)  bei com.sleepycat.persist.EntityStore. (EntityStore.java:165)  bei TopMoveDAO.TopMovePut.setup (TopMovePut.java:40)  bei TopMoveDAO.TopMovePut.run (TopMovePut.java:59)  bei TopMoveDAO.TopMovePut.main (TopMovePut.java:84)

package TopMoveDAO;

import java.io.File;
import java.util.Timer;
import java.util.TimerTask;

import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;

import com.sleepycat.persist.EntityStore;
import com.sleepycat.persist.StoreConfig; 

public class TopMovePut {

    //private static File envHome = new File("C:/dev/je-3.3.75/");
 private static File envHome = new File("C:/dev/db/berkeley");


    private Environment envmnt;
    private EntityStore store;
    private TopMoveDA sda; 


//Next we create a method that simply opens our database environment and entity store for us.

   // The setup() method opens the environment and store
    // for us.
    public void setup()
        throws DatabaseException {

        EnvironmentConfig envConfig = new EnvironmentConfig();
        StoreConfig storeConfig = new StoreConfig();

        envConfig.setAllowCreate(true);
        storeConfig.setAllowCreate(true);

        // Open the environment and entity store
        envmnt = new Environment(envHome, envConfig);
       store = new EntityStore(envmnt, "EntityStore", storeConfig);
    } 

//We also need a method to close our environment and store.

    // Close our environment and store.
    public void shutdown()
        throws DatabaseException {

        store.close();
        envmnt.close();
    } 



//Populate the entity store
private void run()
    throws DatabaseException {

    setup();

    // Open the data accessor. This is used to store
    // persistent objects.
    sda = new TopMoveDA(store);

    // Instantiate and store some entity classes

    PriceElement pe1 = new PriceElement();

    pe1.setSecCode("UNO");
    pe1.setLastPrice(1);

    sda.pIdx.put(pe1);

    shutdown();
} 

//main
public static void main(String args[]) {
    //SimpleStorePut ssp = new SimpleStorePut();
    TopMovePut tmp = new TopMovePut();
    try {
        //ssp.run();
     tmp.run();
    } catch (DatabaseException dbe) {
        System.err.println("TopMovePut: " + dbe.toString());
        dbe.printStackTrace();
    } catch (Exception e) {
        System.out.println("Exception: " + e.toString());
        e.printStackTrace();
    }
    System.out.println("All done - TopMovePut.");
}

} 
War es hilfreich?

Lösung

Sie haben eine Mutation schreiben Ihre Datenbank zu entwickeln. die Datenbank löschen, wird das Problem nicht lösen, umgehen sie nur (was in Ordnung ist, wenn Sie noch nicht zur Produktion bereitgestellt haben, aber wenn Sie nicht schreiben Sie Ihre vorhandenen Daten verlieren wollen dann eine Mutation.)

Einige Änderungen an persistenten Objekte werden automatisch von Berkeley DB, wie das Hinzufügen eines Feldes behandelt. Diejenigen, die Daten oder das Umbenennen von Feldern benötigen Sie in der Regel zu schreiben, eine explizite Mutation beinhalten löschen. Wenn Sie mit Mutationen beginnen müssen Sie auch Ihre Einheiten mit Versionsnummern mit Anmerkungen versehen, die die Mutationen beziehen - auch wenn die Mutation automatisch behandelt wird, wird die Versionsnummer erhöhen müssen. Wenn Sie große strukturelle Veränderungen, wie unter Verwendung eines anderen Primärschlüssel machen, werden Sie eine ganze Geschäft Umwandlung zu tun haben.

Achten Sie, wenn Sie eine Datenbank in einer replizierten Umgebung entwickelt. Ich würde stark die folgenden empfehlen zu lesen:

http://www.oracle.com/technology/documentation/berkeley-db/je/java/com/sleepycat/persist/evolve/package-summary.html

Andere Tipps

Sie haben Ihre vorhandene Datenbank jedes Mal löschen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top