Oracle表创建问题

时间:2012-04-20 13:51:53

标签: oracle grails

我在grails应用程序中使用活动插件。当我尝试运行我的应用程序时,我收到此错误。表未创建。我不明白为什么。

| Error 2012-04-20 18:30:24,746 [pool-6-thread-1] ERROR interceptor.CommandContext  - Error while closing command context
Message: 
### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

### The error may involve org.activiti.engine.impl.persistence.entity.PropertyEntity.selectProperty-Inline
### The error occurred while setting parameters
### Cause: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

    Line | Method
->>    8 | wrapException                             in org.apache.ibatis.exceptions.ExceptionFactory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|     77 | selectList                                in org.apache.ibatis.session.defaults.DefaultSqlSession
|     69 | selectList . . . . . . . . . . . . . . .  in     ''
|     40 | selectOne                                 in     ''
|    217 | selectById . . . . . . . . . . . . . . .  in org.activiti.engine.impl.db.DbSqlSession
|    629 | dbSchemaUpdate                            in     ''
|    885 | performSchemaOperationsProcessEngineBuild in     ''
|     25 | execute                                   in org.activiti.engine.impl.SchemaOperationsProcessEngineBuild
|     24 | execute . . . . . . . . . . . . . . . . . in org.activiti.engine.impl.interceptor.CommandExecutorImpl
|     42 | execute                                   in org.activiti.engine.impl.interceptor.CommandContextInterceptor
|     40 | execute . . . . . . . . . . . . . . . . . in org.activiti.spring.SpringTransactionInterceptor
|     33 | execute                                   in org.activiti.engine.impl.interceptor.LogInterceptor
|     77 | <init> . . . . . . . . . . . . . . . . .  in org.activiti.engine.impl.ProcessEngineImpl
|    271 | buildProcessEngine                        in org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl
|     60 | buildProcessEngine . . . . . . . . . . .  in org.activiti.spring.SpringProcessEngineConfiguration
|     56 | getObject                                 in org.activiti.spring.ProcessEngineFactoryBean
|     32 | getObject . . . . . . . . . . . . . . . . in     ''
|    334 | innerRun                                  in java.util.concurrent.FutureTask$Sync
|    166 | run . . . . . . . . . . . . . . . . . . . in java.util.concurrent.FutureTask
|   1110 | runWorker                                 in java.util.concurrent.ThreadPoolExecutor
|    603 | run . . . . . . . . . . . . . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^    722 | run                                       in java.lang.Thread

Caused by SQLSyntaxErrorException: ORA-00942: table or view does not exist

->>   91 | newSQLException                           in oracle.jdbc.driver.SQLStateMapping
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    112 | newSQLException                           in oracle.jdbc.driver.DatabaseError
|    173 | throwSqlException . . . . . . . . . . . . in     ''
|    455 | processError                              in oracle.jdbc.driver.T4CTTIoer
|    413 | processError . . . . . . . . . . . . . .  in     ''
|   1030 | receive                                   in oracle.jdbc.driver.T4C8Oall
|    194 | doOall8 . . . . . . . . . . . . . . . . . in oracle.jdbc.driver.T4CPreparedStatement
|    785 | executeForDescribe                        in     ''
|    860 | executeMaybeDescribe . . . . . . . . . .  in     ''
|   1186 | doExecuteWithTimeout                      in oracle.jdbc.driver.OracleStatement
|   3381 | executeInternal . . . . . . . . . . . . . in oracle.jdbc.driver.OraclePreparedStatement
|   3482 | execute                                   in     ''
|   1373 | execute . . . . . . . . . . . . . . . . . in oracle.jdbc.driver.OraclePreparedStatementWrapper
|    172 | execute                                   in org.apache.commons.dbcp.DelegatingPreparedStatement
|     39 | query . . . . . . . . . . . . . . . . . . in org.apache.ibatis.executor.statement.PreparedStatementHandler
|     55 | query                                     in org.apache.ibatis.executor.statement.RoutingStatementHandler
|     41 | doQuery . . . . . . . . . . . . . . . . . in org.apache.ibatis.executor.SimpleExecutor
|    216 | queryFromDatabase                         in org.apache.ibatis.executor.BaseExecutor
|     95 | query . . . . . . . . . . . . . . . . . . in     ''
|     72 | query                                     in org.apache.ibatis.executor.CachingExecutor
|     75 | selectList . . . . . . . . . . . . . . .  in org.apache.ibatis.session.defaults.DefaultSqlSession
|     69 | selectList                                in     ''
|     40 | selectOne . . . . . . . . . . . . . . . . in     ''
|    217 | selectById                                in org.activiti.engine.impl.db.DbSqlSession
|    629 | dbSchemaUpdate . . . . . . . . . . . . .  in     ''
|    885 | performSchemaOperationsProcessEngineBuild in     ''
|     25 | execute . . . . . . . . . . . . . . . . . in org.activiti.engine.impl.SchemaOperationsProcessEngineBuild
|     24 | execute                                   in org.activiti.engine.impl.interceptor.CommandExecutorImpl
|     42 | execute . . . . . . . . . . . . . . . . . in org.activiti.engine.impl.interceptor.CommandContextInterceptor
|     40 | execute                                   in org.activiti.spring.SpringTransactionInterceptor
|     33 | execute . . . . . . . . . . . . . . . . . in org.activiti.engine.impl.interceptor.LogInterceptor
|     77 | <init>                                    in org.activiti.engine.impl.ProcessEngineImpl
|    271 | buildProcessEngine . . . . . . . . . . .  in org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl
|     60 | buildProcessEngine                        in org.activiti.spring.SpringProcessEngineConfiguration
|     56 | getObject . . . . . . . . . . . . . . . . in org.activiti.spring.ProcessEngineFactoryBean
|     32 | getObject                                 in     ''
|    334 | innerRun . . . . . . . . . . . . . . . .  in java.util.concurrent.FutureTask$Sync
|    166 | run                                       in java.util.concurrent.FutureTask
|   1110 | runWorker . . . . . . . . . . . . . . . . in java.util.concurrent.ThreadPoolExecutor
|    603 | run                                       in java.util.concurrent.ThreadPoolExecutor$Worker
^    722 | run . . . . . . . . . . . . . . . . . . . in java.lang.Thread
| Error 2012-04-20 18:30:24,927 [pool-6-thread-1] ERROR context.GrailsContextLoader  - Error executing bootstraps: Error creating bean with name 'processEngine': FactoryBean threw exception on object creation; nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

### The error may involve org.activiti.engine.impl.persistence.entity.PropertyEntity.selectProperty-Inline
### The error occurred while setting parameters
### Cause: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

Message: Error creating bean with name 'processEngine': FactoryBean threw exception on object creation; nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

### The error may involve org.activiti.engine.impl.persistence.entity.PropertyEntity.selectProperty-Inline
### The error occurred while setting parameters
### Cause: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

    Line | Method
->>  334 | innerRun  in java.util.concurrent.FutureTask$Sync
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    166 | run       in java.util.concurrent.FutureTask
|   1110 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    603 | run       in java.util.concurrent.ThreadPoolExecutor$Worker
^    722 | run . . . in java.lang.Thread

Caused by PersistenceException: 
### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

### The error may involve org.activiti.engine.impl.persistence.entity.PropertyEntity.selectProperty-Inline
### The error occurred while setting parameters
### Cause: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

->>    8 | wrapException in org.apache.ibatis.exceptions.ExceptionFactory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|     77 | selectList in org.apache.ibatis.session.defaults.DefaultSqlSession
|     69 | selectList in     ''
|     40 | selectOne in     ''
|    217 | selectById in org.activiti.engine.impl.db.DbSqlSession
|    629 | dbSchemaUpdate in     ''
|    885 | performSchemaOperationsProcessEngineBuild in     ''
|     25 | execute   in org.activiti.engine.impl.SchemaOperationsProcessEngineBuild
|     24 | execute . in org.activiti.engine.impl.interceptor.CommandExecutorImpl
|     42 | execute   in org.activiti.engine.impl.interceptor.CommandContextInterceptor
|     40 | execute . in org.activiti.spring.SpringTransactionInterceptor
|     33 | execute   in org.activiti.engine.impl.interceptor.LogInterceptor
|     77 | <init> .  in org.activiti.engine.impl.ProcessEngineImpl
|    271 | buildProcessEngine in org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl
|     60 | buildProcessEngine in org.activiti.spring.SpringProcessEngineConfiguration
|     56 | getObject in org.activiti.spring.ProcessEngineFactoryBean
|     32 | getObject in     ''
|    334 | innerRun  in java.util.concurrent.FutureTask$Sync
|    166 | run . . . in java.util.concurrent.FutureTask
|   1110 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    603 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^    722 | run       in java.lang.Thread

Caused by SQLSyntaxErrorException: ORA-00942: table or view does not exist

->>   91 | newSQLException in oracle.jdbc.driver.SQLStateMapping
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    112 | newSQLException in oracle.jdbc.driver.DatabaseError
|    173 | throwSqlException in     ''
|    455 | processError in oracle.jdbc.driver.T4CTTIoer
|    413 | processError in     ''
|   1030 | receive   in oracle.jdbc.driver.T4C8Oall
|    194 | doOall8 . in oracle.jdbc.driver.T4CPreparedStatement
|    785 | executeForDescribe in     ''
|    860 | executeMaybeDescribe in     ''
|   1186 | doExecuteWithTimeout in oracle.jdbc.driver.OracleStatement
|   3381 | executeInternal in oracle.jdbc.driver.OraclePreparedStatement
|   3482 | execute   in     ''
|   1373 | execute . in oracle.jdbc.driver.OraclePreparedStatementWrapper
|    172 | execute   in org.apache.commons.dbcp.DelegatingPreparedStatement
|     39 | query . . in org.apache.ibatis.executor.statement.PreparedStatementHandler
|     55 | query     in org.apache.ibatis.executor.statement.RoutingStatementHandler
|     41 | doQuery . in org.apache.ibatis.executor.SimpleExecutor
|    216 | queryFromDatabase in org.apache.ibatis.executor.BaseExecutor
|     95 | query . . in     ''
|     72 | query     in org.apache.ibatis.executor.CachingExecutor
|     75 | selectList in org.apache.ibatis.session.defaults.DefaultSqlSession
|     69 | selectList in     ''
|     40 | selectOne in     ''
|    217 | selectById in org.activiti.engine.impl.db.DbSqlSession
|    629 | dbSchemaUpdate in     ''
|    885 | performSchemaOperationsProcessEngineBuild in     ''
|     25 | execute . in org.activiti.engine.impl.SchemaOperationsProcessEngineBuild
|     24 | execute   in org.activiti.engine.impl.interceptor.CommandExecutorImpl
|     42 | execute . in org.activiti.engine.impl.interceptor.CommandContextInterceptor
|     40 | execute   in org.activiti.spring.SpringTransactionInterceptor
|     33 | execute . in org.activiti.engine.impl.interceptor.LogInterceptor
|     77 | <init>    in org.activiti.engine.impl.ProcessEngineImpl
|    271 | buildProcessEngine in org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl
|     60 | buildProcessEngine in org.activiti.spring.SpringProcessEngineConfiguration
|     56 | getObject in org.activiti.spring.ProcessEngineFactoryBean
|     32 | getObject in     ''
|    334 | innerRun  in java.util.concurrent.FutureTask$Sync
|    166 | run       in java.util.concurrent.FutureTask
|   1110 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    603 | run       in java.util.concurrent.ThreadPoolExecutor$Worker
^    722 | run . . . in java.lang.Thread

2 个答案:

答案 0 :(得分:3)

此错误消息会出现3种可能性:

  1. 实际引用的表/视图实际上不存在。
  2. 正在引用的表/视图确实存在,但您没有从中进行SELECT的权限。
  3. 表/视图存在,您具有从中进行SELECT的权限,但表/视图位于不同的模式中,并且未使用限定名称(例如,SCHEMA.TABLE_NAME)引用,或者不通过同义词进行别名。
  4. 问题的修复应该是相当明显的:

    1. 创建表/视图
    2. 通过GRANT命令获取表/视图的权限
    3. 在SELECT语句中创建同义词或完全限定表/视图名称

答案 1 :(得分:0)

我刚刚在Grails项目中遇到了相同的症状。

我通过以不存在的格式添加新的日期变量和默认值来导致错误。

面向对象版本失败后对我有用的日期格式是:

static mapping = {
    myVar defaultValue: "'01-JAN-1970'"
}

你可能有一个不同的错误,但重点是create table语句失败,可能是由于数据库交互的某些方面有点“偏离常规”并且最近添加了。

要进行问题排查,我会采取以下步骤:

1)验证您运行的是您认为自己的DataSource.groovy配置(例如,更改密码并确保您无法登录)以及您的dbCreate变量设置为“create”或“create” - 酌情。如果有充分的理由使用更新或验证,则在不同的环境中创建相同的对象并移动或仅适当地创建表。如果您不确定,请在新项目的最开始使用create-drop来使用这些工具,然后再不使用。

2)当您确认grails应该如上所述创建表格时,请打开日志记录以查看重新启动期间实际发生的情况。为此,请将“logSql = true”和“formatSql”= true添加到与用户名和密码相同级别的数据源配置中。您应该在标准输出中看到有缺陷的create语句。

3)如果您无法立即看到错误,请直接在sqlplus中运行语句以隔离违规原因。这可能会指出最近的变化。