سؤال

أنا أستخدم Berkely DB ولدي خطأ يقول أن الطفرات مفقودة. ماذا يعني هذا؟

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

في com.sleepycat.persist.impl.persistcatalog. (persistcatalog.java:365) في com.sleepycat.persist.impl.store. (store.java:180) في com.sleepycat.persist.entitystore. (Entitystore.java: 165) في topmovedao.topmoveput.setup (topmoveput.java:40) في topmovedao.topmoveput.run (topmoveput.java:59) في 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.");
}

} 
هل كانت مفيدة؟

المحلول

عليك أن تكتب طفرة لتطوير قاعدة البيانات الخاصة بك. لن يحل حذف قاعدة البيانات المشكلة، فقط التحايل عليه (وهو أمر جيد إذا لم تكن قد نشرت بعد للإنتاج، ولكن إذا كنت لا تريد أن تفقد بياناتك الحالية، فقم بكتابة طفرة.)

يتم التعامل مع بعض التغييرات في كياناتك المستمرة تلقائيا بواسطة Berkley DB، مثل إضافة حقل. تتطلب تلك التي تنطوي على حذف الحقول أو إعادة تسامها عموما تكتب طفرة صريحة. عند البدء في استخدام الطفرات، سيتعين عليك أيضا التعليق على كياناتك بأرقام الإصدار التي ستشيرها الطفرات - حتى إذا تم التعامل مع الطفرة تلقائيا، سيتعين عليك زيادة رقم الإصدار. عند إجراء تغييرات هيكلية كبيرة مثل استخدام مفتاح أساسي مختلف، سيتعين عليك القيام بتحويل متجر كامل.

اعتن عند تطوير قاعدة بيانات في بيئة تكرار. أود أن أقترح بشدة قراءة ما يلي:

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

نصائح أخرى

يجب عليك حذف قاعدة البيانات الموجودة في كل مرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top