2009-05-23 2 views
0

Berkely DB를 사용하고 있는데 돌연변이가 없음을 알리는 오류가 있습니다. 이것은 무엇을 의미 하는가?Berkeley 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.main에서 TopMoveDAO.TopMovePut.run (TopMovePut.java:59)에서 (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."); 
} 

} 

답변

1

데이터베이스를 발전시키기 위해 돌연변이를 작성해야합니다. 데이터베이스를 삭제해도 문제가 해결되지 않으며 우회하는 경우에만 사용할 수 있습니다. 아직 프로덕션 환경에 배포하지 않은 경우 문제가되지 않지만 기존 데이터를 잃지 않으려면 돌연변이를 작성하십시오.

일부 변경 사항 영구 엔티티는 필드 추가와 같이 Berkley db에 의해 자동으로 처리됩니다. 데이터를 삭제하거나 필드의 이름을 바꾸는 일은 일반적으로 명시적인 돌연변이를 작성해야합니다. 돌연변이를 사용하기 시작할 때 돌연변이가 참조 할 버전 번호로 엔티티에 주석을 달아야합니다. 돌연변이가 자동으로 처리 되더라도 버전 번호를 증가시켜야합니다. 다른 기본 키를 사용하는 것과 같이 구조적으로 큰 변경을 수행하면 전체 상점 변환을 수행해야합니다.

복제 된 환경에서 데이터베이스를 발전시킬 때주의하십시오.

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

+0

링크 : 난 강력하게 다음을 읽고 제안 http://www.oracle.com/technology/documentation/berkeley-db/je/java/com/sleepycat/persist/evolve/package- summary.html을 사용할 수 없습니다. 새로운 하나는 http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/persist/evolve/package-summary.html입니다. – Veniamin

-1

매번 기존 데이터베이스를 삭제해야합니다.