【问题标题】:Play Framework using Oracle Database - ORA-00942: table or view does not exist使用 Oracle 数据库的 Play 框架 - ORA-00942:表或视图不存在
【发布时间】:2013-02-21 10:17:51
【问题描述】:

我无法解决本地 Oracle 数据库的问题。 我正在尝试连接到我的本地 Oracle 数据库(Oracle 数据库 11g 快捷版) 稍后我将使用 JNDI 到另一个 Oracle 数据库,但我认为这应该仍然有效。 驱动:/lib中的ojdbc6.jar

db.default.driver=oracle.jdbc.driver.OracleDriver
db.default.url="jdbc:oracle:thin:@localhost:1521:xe"
db.default.user="user"
db.default.pass="pass"

所以我知道我确实连接到数据库,但错误是它说该表不存在。我什至没有创建或查询表(不存在模型 - 但我也尝试过使用模型,同样的错误)。一开始似乎有问题,我不知道如何调试。

错误:

**java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist**
 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:457)
 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:400)
 oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:926)
 oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:476)
 oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:200)
 oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:543)
 oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:197)
 oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:1213)
 oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1492)
 oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1710)
 oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:2006)
 oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:1709)
 com.jolbox.bonecp.StatementHandle.executeQuery(StatementHandle.java:503)
 play.api.db.evolutions.Evolutions$.executeQuery(Evolutions.scala:118)
 play.api.db.evolutions.Evolutions$.databaseEvolutions(Evolutions.scala:334)
 play.api.db.evolutions.Evolutions$.evolutionScript(Evolutions.scala:306)
 play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1$$anonfun$apply$1.apply$mcV$sp(Evolutions.scala:435)
 play.api.db.evolutions.EvolutionsPlugin.withLock(Evolutions.scala:478)
 play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1.apply(Evolutions.scala:434)
 play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1.apply(Evolutions.scala:432)
 scala.collection.immutable.List.foreach(List.scala:309)
 play.api.db.evolutions.EvolutionsPlugin.onStart(Evolutions.scala:432)
 play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:63)
 play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:63)
 scala.collection.immutable.List.foreach(List.scala:309)
 play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:63)
 play.api.Play$$anonfun$start$1.apply(Play.scala:63)
 play.api.Play$$anonfun$start$1.apply(Play.scala:63)

当我阅读它时,我只发现我可能没有对某些表的权限,但问题是我在 Oracle SQL Developer 中使用相同的登录名并且它可以工作。

【问题讨论】:

  • 您使用的是哪个版本的 Play?

标签: database oracle11g playframework-2.0 oracle-xe


【解决方案1】:

正如 nico_ekito 所写,您需要手动创建此表。

这个对我有用:

CREATE TABLE play_evolutions
(
  id Number(10,0) Not Null Enable,
  hash VARCHAR2(255 Byte),
  applied_at Timestamp Not Null,
  apply_script clob,
  revert_script clob,
  state Varchar2(255),
  last_problem clob,
  CONSTRAINT play_evolutions_pk PRIMARY KEY (id)
); 

【讨论】:

    【解决方案2】:

    尝试手动创建一个包含以下列的play_evolutions 表(通过使类型适应Oracle 使用的类型):

    id int not null primary key, hash varchar(255) not null, 
    applied_at timestamp not null, 
    apply_script text, 
    revert_script text, 
    state varchar(255), 
    last_problem text
    

    【讨论】:

      【解决方案3】:

      conf/application.conf

      取消注释以下行:

      evolutionplugin=disabled

      这是在您不需要 Evolutions(跟踪架构更改)的情况下。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-16
        • 2019-01-22
        • 2015-11-09
        • 2011-12-10
        • 2018-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多