문제

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.impl.persistcatalog. (com.sleepycat.mpl.store. 165) at topmovedao.topmoveput.setup (topmoveput.java:40) at 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