2011-12-23 20 views
6

埋め込み型ダービーでhibernateを使用していますが、データベースとテーブルを作成するために休止状態にしたいので、次の設定を試しましたが、java.sql.SQLException:スキーマ 'ROOT'が存在しません

java.sql.SQLException: Schema 'ROOT' does not exist 

ここに/ sの私の設定:

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 

    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="com.myapp.domain" /> 


    <property name="hibernateProperties"> 
     <value> 
      hibernate.dialect=org.hibernate.dialect.DerbyDialect 
      hibernate.hbm2ddl.auto=create 
      hibernate.show_sql=false 
      hibernate.format_sql=false 
     </value> 
    </property> 

</bean> 

<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 

    <property name="driverClassName" value="org.apache.derby.jdbc.EmbeddedDriver" /> 

    <property name="url" value="jdbc:derby:test;create=true" /> 

    <property name="username" value="root" /> 

    <property name="password" value="root" /> 

</bean> 

<bean id="transactionManager" 
    class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 


<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" /> 

がUPDATE:私はおそらくいくつかの不足している情報を持っているので、それはダービーの私の最初の使用ですので、私は質問があります。

私はここのように埋め込まれたダービーを設定する必要があります:

http://db.apache.org/derby/papers/DerbyTut/install_software.html

はUPDATE 2:私は、データベースにデモデータを挿入するための責任があるクラスパス上のimport.sqlスクリプトファイルを削除し、私が見つけましたデータベーステーブルの作成中にエラーがあること:

1202 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - Running hbm2ddl schema export 
1202 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - exporting generated schema to database 
1359 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaExport - Unsuccessful: create table users (user_id bigint generated by default as identity unique, address varchar(255), email varchar(155) not null, mobile varchar(25), name varchar(25) not null, password varchar(255) not null, primary key (user_id)) 
1359 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaExport - Constraints 'SQL111223214919671' and 'SQL111223214919670' have the same set of columns, which is not allowed. 
1359 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - schema export complete 
1360 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Warning: 10000, SQLState: 01J01 
1360 [main] WARN org.hibernate.util.JDBCExceptionReporter - Database 'test' not created, connection made to existing database instead. 
+0

never used derby。しかし、データベースのユーザ "root"を定義しましたか(テストベースへのアクセス権あり) – Vinze

+0

まあ、ここでの設定を試したところ、上記のユーザでデータベースを作成してhttp://を渡すべきだと思いましたstackoverflow.com/questions/8459284/using-hibernate-with-embedded-derby/8463463#comment10693363_8463463 –

+0

には、埋め込みドライバtutがあります:https://db.apache.org/derby/papers/DerbyTut/embedded_intro.html。しかしあなたのコードはきれいに見えます – oers

答えて

3

はクラスパスからimport.sqlファイルを削除し、アプリケーションを実行した後、私はエラーがdatabseが作成されていることであることがわかったが、テーブルが原因http://issues.apache.org/jira/browse/DERBY-789 がここで述べる問題にhbm2ddlによって作成されていない:constraint problems using apache derby and hbm2ddl

プライマリキーはデータベース自体によって処理されるため、一意のキーとして定義することはできません。

私はプライマリキーから一意の属性を削除すると、エラーはなくなりました。

は私の答えは役立つことを願ってスキーマAPPのユーザアプリ:

0

申し訳ありませんが、ダービー自分自身使ったことがないが、私はこの問題は、Hibernateはあなたのための任意のデータベース、データベース・ユーザーまたはデータベース・スキーマを作成することができないということだと思います。これは単なる推測ですが、私には、ユーザーのデータベーススキーマも必要であることを示すエラーメッセージが表示されます。あらかじめデータベース、データベースユーザルート、スキーマルートを作成してから、Hibernateに接続してテーブルを作成してください。

+0

; create = trueはそれを処理する必要があります – oers

+0

@oers:ありがとうございました。しかし、私はかなり休止状態は、スキーマを作成することはできませんと、それはユーザーのスキーマが存在しないように見えます。ですから、私はcreate = falseで試して、データベースとスキーマを事前に作成します。 – tscho

+0

@tscho、私はポストを更新しました、助言してください。 –

0

最も簡単な解決策は、データベースのプロパティを設定し、元のユーザー名としてではなく、資本リットルのスキーマを同じにすることです。

関連する問題