2012-09-12 2 views
1

Netbeans 플랫폼 앱에서이 출력을보고 있는데 여기에서 JPA와 함께 Derby 데이터베이스를 사용하고 있습니다. 사용자 루트 디렉토리에 내 db가 만들어져 있지 않으면 이미 존재하지 않으므로 사용자가 추가 구성을 할 수 없습니다. 아래의 예외 메시지 또는 경고가 문제가 될지 아는 사람 있습니까?이러한 JPA 오류 메시지가 문제입니까?

derby.system.home=/home/simgineer/.simdriver 
derby.stream.error.file=/home/simgineer/.simdriver/log/derby.log 
[EL Info]: 2012-09-12 11:46:42.397--ServerSession(177592104)--file:/home/simgineer/NetBeansProjects/SimDriver/build/cluster/modules/ext/MyDbLib.jar_VmCfgLibPU login successful 
Database Class Loader started - derby.database.classpath='' 
[EL Warning]: 2012-09-12 11:46:42.763--ServerSession(177592104)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: java.sql.SQLException: Table/View 'VMCFG' already exists in Schema 'APP'. 
Error Code: 30000 
Call: CREATE TABLE APP.VMCFG (ID BIGINT NOT NULL, BOOT VARCHAR(30), CDROM VARCHAR(60), CPU VARCHAR(30), ENABLEKVM SMALLINT, HDA VARCHAR(80), MACADDR VARCHAR(30), SOUNDHW VARCHAR(30), VMNAME VARCHAR(30) NOT NULL, PRIMARY KEY (ID)) 
Query: DataModifyQuery(sql="CREATE TABLE APP.VMCFG (ID BIGINT NOT NULL, BOOT VARCHAR(30), CDROM VARCHAR(60), CPU VARCHAR(30), ENABLEKVM SMALLINT, HDA VARCHAR(80), MACADDR VARCHAR(30), SOUNDHW VARCHAR(30), VMNAME VARCHAR(30) NOT NULL, PRIMARY KEY (ID))") 
[EL Warning]: 2012-09-12 11:46:42.876--ServerSession(177592104)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: java.sql.SQLException: Table/View 'SEQUENCE' already exists in Schema 'APP'. 
Error Code: 30000 
Call: CREATE TABLE SEQUENCE (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT DECIMAL(15), PRIMARY KEY (SEQ_NAME)) 
Query: DataModifyQuery(sql="CREATE TABLE SEQUENCE (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT DECIMAL(15), PRIMARY KEY (SEQ_NAME))") 

은 여기 내 persistence.xml을

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="VmCfgLibPU" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <class>mycompany.jpa.Vmcfg</class> 
    <properties> 
     <property name="javax.persistence.jdbc.url" value="jdbc:derby:myDB;create=true"/> 
     <property name="javax.persistence.jdbc.password" value="app"/> 
     <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/> 
     <property name="javax.persistence.jdbc.user" value="app"/> 
     <property name="eclipselink.ddl-generation" value="create-tables"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

답변

1

당신이 테이블을 삭제하지 않고 응용 프로그램을 여러 번 실행되기 때문에 당신이 점점 예외입니다. 이 질문과 답변을보고 싶을 수도 있습니다. JPA and toplink create-table on if they don't already exist?

+1

감사합니다. 임베디드 모드에서 이것을 사용하고 사용자가 db를 작성하기위한 추가 단계를 원하지 않기 때문에 테이블이 이미 존재하는 경우 테이블을 삭제하고 싶지 않습니다. 그것의 재밌는 거기에 질문에 대한 예외 답변을 제외하고 질문에 대답하지 않지만 DDL 스크립트를 대신 생성 할 수 있습니다 말합니다. 필자는 파스칼이 언급 한 스펙에서 이미 광고 된 것처럼 시스템이 테이블을 생성하려고 시도하지 않기를 바랄뿐입니다. – simgineer