java.sql.SQLException: схема «ROOT» не существует

Я использую спящий режим со встроенным дерби и хочу, чтобы спящий режим создавал базу данных и таблицы, поэтому я попробовал следующую конфигурацию, но получаю сообщение об ошибке:

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

вот моя конфигурация:

    <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" />

ОБНОВЛЕНИЕ: я впервые использую дерби, поэтому, возможно, у меня есть недостающая информация, поэтому у меня есть вопрос:

мне нужно настроить Embedded Derby, как здесь:

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

ОБНОВЛЕНИЕ 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.

person Mahmoud Saleh    schedule 23.12.2011    source источник
comment
никогда не играл в дерби. а вы определили пользователя root для базы данных (с доступом к тестовой базе)   -  person Vinze    schedule 23.12.2011
comment
ну, я только что попробовал конфигурацию, как здесь, и подумал, что она должна создать базу данных с указанным выше пользователем/паролем stackoverflow.com/questions/8459284/   -  person Mahmoud Saleh    schedule 23.12.2011
comment
вот встроенный драйвер: db.apache.org/derby/papers/DerbyTut/ embed_intro.html. Но ваш код выглядит нормально   -  person oers    schedule 23.12.2011
comment
В часто задаваемых вопросах говорится, что схема создается при создании чего-либо в этой схеме. Вы видите, какие операторы sql выполняются? Может быть, спящий режим (или весна) начинается с падения здесь.   -  person oers    schedule 23.12.2011
comment
@Vinze, @oers, я обновил пост, пожалуйста, сообщите.   -  person Mahmoud Saleh    schedule 23.12.2011


Ответы (3)


после удаления файла import.sql из пути к классам и запуска приложения я обнаружил, что ошибка заключалась в том, что база данных создана, но таблицы не были созданы hbm2ddl из-за проблемы http://issues.apache.org/jira/browse/DERBY-789 указано здесь: проблемы ограничения с использованием apache derby и hbm2ddl

что первичный ключ не может быть определен как уникальный, поскольку он обрабатывается самой базой данных.

поэтому, когда я удалил уникальный атрибут из первичного ключа, ошибка исчезла.

person Mahmoud Saleh    schedule 23.12.2011

Извините, сам никогда не использовал Derby, но я думаю, что проблема в том, что Hibernate не может создавать для вас базы данных, пользователей баз данных или схемы баз данных. Это всего лишь предположение, но для меня сообщение об ошибке указывает на то, что вам также нужна схема базы данных для пользователя. Попробуйте заранее создать базу данных, корень пользователя базы данных и корень схемы, а затем подключитесь к Hibernate для создания таблиц.

person tscho    schedule 23.12.2011
comment
;create=true должен позаботиться об этом - person oers; 23.12.2011
comment
@oers: Спасибо, не видел. Но я совершенно уверен, что hibernate не может создать схему, и похоже, что схема для пользователя отсутствует. Итак, я бы попробовал с create=false и заранее создал базу данных и схему. - person tscho; 23.12.2011

самое простое решение - настроить свойства вашей базы данных и сделать схему такой же, как имя пользователя, но в заглавных буквах, например: схема пользовательское приложение APP

надеюсь, что мой ответ может помочь.

person Sobhy Elgraidy    schedule 26.08.2017