Announcement Announcement Module
Collapse
No announcement yet.
“user lacks privilege or object not found” when executing sql script from spring Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • “user lacks privilege or object not found” when executing sql script from spring

    I am using Hibernate 3 and Spring 3. I have been trying to populate an in memory database, and I am using Spring to do so. When I try to do this, I am getting lots of frustration, and this stack trace: To save you guys some reading, the exception is:

    Code:
    user lacks privilege or object not found: XFC_ACTIONSTARTCONDITIONTYPE
    But here is the full stack trace:

    Code:
    Failed to execute database script; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement at line 1 of resource class path resource [ctl_data-scrubd.sql]: INSERT INTO xfc_ActionStartConditionType (actionStartConditionTypeId,actionStartConditionTypeName) VALUES ('1','Start After Action Completed')" type="org.springframework.dao.DataAccessResourceFailureException">org.springframework.dao.DataAccessResourceFailureException: Failed to execute database script; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement at line 1 of resource class path resource [ctl_data-scrubd.sql]: INSERT INTO xfc_ActionStartConditionType (actionStartConditionTypeId,actionStartConditionTypeName) VALUES ('1','Start After Action Completed')
    at org.springframework.jdbc.datasource.init.DatabasePopulatorUtils.execute(DatabasePopulatorUtils.java:57)
    at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactory.initDatabase(EmbeddedDatabaseFactory.java:136)
    at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactory.getDatabase(EmbeddedDatabaseFactory.java:111)
    at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder.build(EmbeddedDatabaseBuilder.java:113)
    at com.capitaliq.loader.persistence.PersistenceHelper.setUpSessionFactory(PersistenceHelper.java:123)
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
    Caused by: org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement at line 1 of resource class path resource [ctl_data-scrubd.sql]: INSERT INTO xfc_ActionStartConditionType (actionStartConditionTypeId,actionStartConditionTypeName) VALUES ('1','Start After Action Completed')
        at org.springframework.jdbc.datasource.init.ResourceDatabasePopulator.executeSqlScript(ResourceDatabasePopulator.java:198)
        at org.springframework.jdbc.datasource.init.ResourceDatabasePopulator.populate(ResourceDatabasePopulator.java:132)
        at org.springframework.jdbc.datasource.init.DatabasePopulatorUtils.execute(DatabasePopulatorUtils.java:45)
    Caused by: java.sql.SQLException: user lacks privilege or object not found: XFC_ACTIONSTARTCONDITIONTYPE
        at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
        at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
        at org.hsqldb.jdbc.JDBCStatement.executeUpdate(Unknown Source)
        at org.springframework.jdbc.datasource.init.ResourceDatabasePopulator.executeSqlScript(ResourceDatabasePopulator.java:184)
    Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: XFC_ACTIONSTARTCONDITIONTYPE
        at org.hsqldb.error.Error.error(Unknown Source)
        at org.hsqldb.SchemaManager.getTable(Unknown Source)
        at org.hsqldb.ParserDQL.readTableName(Unknown Source)
        at org.hsqldb.ParserDML.compileInsertStatement(Unknown Source)
        at org.hsqldb.ParserCommand.compilePart(Unknown Source)
        at org.hsqldb.ParserCommand.compileStatements(Unknown Source)
        at org.hsqldb.Session.executeDirectStatement(Unknown Source)
        at org.hsqldb.Session.execute(Unknown Source)
    I tentatively want to say my problem is the tables are not being created, but I am not sure. I have followed all the directions about creating a database, and every combination under the sun will not work. Here is my context.xml:

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans default-lazy-init="true" xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:jdbc="http://www.springframework.org/schema/jdbc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/jdbc
    http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd">
    <tx:annotation-driven transaction-manager="transactionManager"/>
    
    
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">    <!---->
        <property name="driverClassName" value="org.hsqldb.jdbc.JDBCDriver"/>
        <property name="url" value="jdbc:hsqldb:mem:mydb;create=true"/>
        <property name="username" value="sa"/>
        <property name="password" value=""/>
    
    </bean>
    
        <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="hibernate.cfg.xml.incDTD"/>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
                <prop key="hibernate.hbm2ddl.auto">create</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.connection.shutdown">true</prop>
            </props>
        </property>
    </bean>
    
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    
    <!--    <jdbc:initialize-database data-source="dataSource" enabled="#{systemProperties.INITIALIZE_DATABASE}" ignore-failures="ALL">
        <jdbc:script location="classpath:ctl_data-scrubd.sql" />
    </jdbc:initialize-database>-->
    
    
    
    
    <bean id="dataSourceInitializer" class="org.springframework.jdbc.datasource.init.DataSourceInitializer">
        <property name="dataSource" ref="dataSource"/>
        <property name="databasePopulator">
            <bean class="org.springframework.jdbc.datasource.init.ResourceDatabasePopulator">
                <property name="sqlScriptEncoding" value="UTF-8"/>
                <property name="scripts">
                    <list>
                        <value>classpath:ctl_data-scrubd.sql</value>
                    </list>
                </property>
            </bean>
        </property>
    </bean>
    </beans>
    All i want to do is use the script file to populate this database. Don't say that my sql is wrong, because I know for a fact it isn't. Anyone got any ideas? It would be much, much appreciated.
Working...
X