Ява.язык SQL.SQLException: схема "ROOT" не существует
Я использую hibernate с embeded derby, и я хочу, чтобы hibernate создал базу данных и таблицы, поэтому я попробовал следующую конфигурацию, но я получаю ошибку:
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" />
обновление: это мое первое использование дерби, поэтому у меня, возможно, есть недостающая информация, поэтому у меня есть вопрос:
мне нужно настроить встроенное дерби, как в здесь:
http://db.apache.org/derby/papers/DerbyTut/install_software.html
обновление 2: я удалил импорт.файл сценария sql на classpath, который отвечает за вставку демонстрационных данных в базу данных, и я обнаружил, что есть ошибка в создании таблицы базы данных:
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.
3 ответов
после удаления импорт.sql-файл из classpath и запуск приложения, я обнаружил, что ошибка заключалась в том, что databse создан, но таблицы не были созданы hbm2ddl из-за проблемы http://issues.apache.org/jira/browse/DERBY-789 говорится здесь: проблемы с ограничениями с использованием apache derby и hbm2ddl
что первичный ключ не может быть определен как уникальный, так что обрабатывается самой базой данных.
поэтому, когда я снял уникальный атрибут из первичного ключа, ошибка исчезла.
Извините, я никогда не использовал Derby, но я думаю, что проблема в том, что Hibernate не может создавать базы данных, пользователей баз данных или схемы баз данных для вас. Это только предположение, но для меня сообщение об ошибке указывает, что вам также нужна схема базы данных для пользователя. Попробуйте создать базу данных, корень пользователя базы данных и корень схемы заранее, а затем подключиться к Hibernate для создания таблиц.
самое простое решение-настроить свойства базы данных и сделать схему такой же, как имя пользователя, но в capital litters ex: schema APP user app
надеюсь, что мой ответ может помочь.